разгледайте следния кадър от данни:
d <- data.frame(c1=c(rep("a",6),rep("b",6)),
c2=c("v1","v1","v2","v3","v3","v1", "v2","v3","v1","v2","v3","v2"),
c3=c(1.4,-1.2,1.5,1.6,-1.7,1.2, -1.1,-1.2,1.3,1.5,1.1,-1.9))
Искам да добавя 4-та колона c4, която брои колко положителни и отрицателни числа има за "a" и "b" в колона c1. Трябва обаче да се вземат предвид само онези стойности в c3, където c2 е равно на "v1". Освен това, ако има само положителни или отрицателни стойности, трябва да се отпечата празен низ
Така че за моя пример 4-тата колона трябва да изглежда така:
> d
c1 c2 c3 c4
1 a v1 1.4 2/1
2 a v1 -1.2 2/1
3 a v2 1.5 2/1
4 a v3 1.6 2/1
5 a v3 -1.7 2/1
6 a v1 1.2 2/1
7 b v2 -1.1 " "
8 b v3 -1.2 " "
9 b v1 1.3 " "
10 b v2 1.5 " "
11 b v3 1.1 " "
12 b v2 -1.9 " "
за a се използва стойността 2/1, тъй като има две положителни числа и едно отрицателно число, където c2="v1"
В момента се доближих най-много с помощта на агрегатната функция, но все още не го разбирам правилно. Не сте сигурни дали има по-добра функция, която да използвате за такъв проблем?