2016-05-13 7 views
0

Ich arbeite in R und versuche einen Weg zu finden, um auf die vorherige Zelle innerhalb eines Vektors zu verweisen, wenn dieser Vektor zu a gehört Datenrahmen. Bei der vorherigen Zelle hoffe ich im Wesentlichen auf einen "Verzögerungs" -Befehl irgendeiner Art, so dass ich eine Zelle mit der vorherigen Zelle vergleichen kann. Als Beispiel habe ich diese Daten:Wie auf die vorherige Zelle in einer Datenrahmenspalte (verzögerte Zelle) verwiesen wird, in R

A <- c(1,0,0,0,1,0,0) 
B <- c(1,1,1,1,1,0,0) 
AB_df <- cbind (A,B) 

Was ich will, ist für eine bestimmte Zelle in einer bestimmten Zeile, wenn dieser Wert der Zelle ist kleiner als der Wert der vorherigen Zelle für die gleiche Spaltenvektor, einen Wert zurückgeben von 1 und wenn nicht, um einen Wert von 0 zurückzugeben. Für dieses Beispiel würden die neuen Spalten "A-Flag" und "B-Flag" genannt werden.

A B A-flag B-flag 
1 1 0  0 
0 1 1  0 
0 1 0  0 
0 1 0  0 
1 1 0  0 
0 0 1  1 
0 0 0  0 

Irgendwelche Vorschläge für die Syntax, die dies tun können? Idealerweise einfach eine neue Spaltenvariable in einen vorhandenen Datenrahmen zu erstellen.

Antwort

1

Hier ist eine Lösung mit dplyr Paket und es ist lag Methode:

library(dplyr) 
AB_df <- data.frame(A = A, B = B) 
AB_df %>% mutate(A.flag = ifelse(A < lag(A, default = 0), 1, 0), 
       B.flag = ifelse(B < lag(B, default = 0), 1, 0)) 
    A B A.flag B.flag 
1 1 1  0  0 
2 0 1  1  0 
3 0 1  0  0 
4 0 1  0  0 
5 1 1  0  0 
6 0 0  1  1 
7 0 0  0  0 
Verwandte Themen