2016-04-09 6 views
1

Ich habe folgende Tabelle alsSumme der vorherigen Zeilen in einer Spalte R

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

Ich brauche bis zeigte Reihe wahr und falsch zu zählen. So das Ergebnis wie die folgende Tabelle sollte

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 

Bis 6. (einschließlich 6.) Reihe gibt es 3 Falsch und 3 Wahr. Irgendwelche Ideen?

Antwort

3

Macht das, was Sie wollen?

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

Oder wenn Sie df $ Zustand als logische Vektor

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

wie @akrun 'vorgeschlagen df $ ja <- cumsum (as.logical (df $ Zustand))' und 'df $ no <- cumsum (! as.logisch (df $ State)) 'sollte besser funktionieren .. :) –

+0

@ G.Cocca Das' as.logical' basierend auf der '' State''-Spalte funktioniert möglicherweise nicht als die Werte sind '" True "' und '" False "' – akrun

+0

Ich nahm an, dass 'as.logical' sein Argument (in diesem Fall Faktor oder Zeichen) zum logischen Typ macht, was zu einem Vektor der logischen Klasse führt. Was ist/ist der Fall, wo es nicht funktioniert? –