2016-04-09 4 views
1

У меня есть таблица следующим образомСумма предыдущих строк в столбце R

id State 
1 True 
2 False 
3 True 
4 False 
5 False 
6 True 
7 True 
8 False 

мне нужно считать истинным и ложным до показал ряд. Таким образом, результат должен быть в следующей таблице

id State Yes No 
1 True  1 0 
2 False  1 1 
3 True  2 1 
4 False  2 2 
5 False  2 3 
6 True  3 3 
7 True  4 3 
8 False  4 4 

До 6 (включая 6) строки есть 3 False и 3 Правда. Есть идеи?

ответ

3

Это делает то, что вы хотите?

df$yes <- cumsum(df$State == "True") 
df$no <- cumsum(df$State == "False") 

Или если у вас есть ф.р. $ государство как логический вектор

df$yes <- cumsum(df$State) 
df$no <- cumsum(!df$State) 
+1

как это было предложено @akrun 'ф.р. $ да <- cumsum (as.logical (DF $ State))' и 'ДХ $ no <- cumsum (! as.logical (df $ State)) 'должен работать лучше .. :) –

+0

@ G.Cocca.' as.logical', основанный на столбце '' State'', может не работать как значения «Истина» и «False» ' – akrun

+0

Я предположил, что' as.logical' принуждает свой аргумент (в данном случае фактор или символ) иметь логический тип, приводящий к вектору класса логический. Что такое/если он может не работать? –

Смежные вопросы