Сумма значений в числовом столбце, которые находятся в интервале между двумя символами другого столбца (R) - PullRequest
0 голосов
/ 16 декабря 2018

Имея этот фрейм данных:

   lt  vl
1   a 1.0
2     2.0
3     0.5
4     6.0
5     7.0
6   a 6.0
7     8.0
8     7.0
9     9.0
10  d 7.0
11     NA
12    0.5
13    8.0
14    5.0
15  g 6.0
16    7.0


lt<-c("a","","","","","a","","","","d","","","","","g","")

vl<-c(1,2,0.5,6,7,6,8,7,9,7,NA,0.5,8,5,6,7)

Я хочу суммировать каждое значение в vl между символами lt.Процесс должен быть таким:

a=1+2+0.5+6+7
a=6+8+7+9
d=7+0.5+8+5
g=6+7

Чтобы окончательно получить:

lt  vl
a   16.5
a   30
d   20.5
g   13 

Примечание: a отличается от a

Яизо всех сил пытаюсь решить это, но это довольно сложно для меня.

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете сделать это с помощью tapply.Коэффициент группировки устанавливается с помощью стандартного cumsum трюка.

f <- cumsum(lt != "")
res <- tapply(vl, f, FUN = sum, na.rm = TRUE)
names(res) <- lt[lt != ""]
res
#   a    a    d    g 
#16.5 30.0 20.5 13.0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...