2016-08-03 7 views
1

Ich arbeite mit longitudinalen Daten im langen Format, und ich bin für die Zwecke dessen, was ich tun möchte, ich versuche im Wesentlichen, es in einen Panel-Datensatz zu verwandeln. Um eine Vorstellung davon zu geben, was ich im Moment haben:Löschen von Variablen in r mit langen Daten

 ID CYRB VAR  VALUE 
    1 1983 ATTEN98 1 
    1 1983 ATTEN00 1 
    1 1983 ATTEN02 0 
    1 1983 ATTEN04 0 
    2 1979 ATTEN98 1 
    2 1979 ATTEN00 0 
    2 1979 ATTEN02 0 
    2 1979 ATTEN04 0 
    .... 

Wo ATTENXX eine Dummy-Variable angibt, ob einzelne ich war Schulbesuch im Jahr Interview. Mein Plan ist, die Variable für das Interview nur zu halten, wenn der Befragte 19 oder 20 war. für eine Person, die 1983 geboren wurde, würde das bedeuten, nur die Variable ATTEN02 zu behalten. Ich habe versucht, es mit einer Kombination von Filter (von dplyr) zu tun, und wenn sonst, aber ich kann einfach nicht die Syntax richtig und am Ende mit einem Fehler enden.

+0

'df [substring ((df $ CYRB + 19), 3, 4) == substring (df $ VAR, 6, 7),] 'Vielleicht so etwas. Füge ein oder '|' für 20 hinzu und du bist fertig. – cory

+0

'df [Teilzeichenfolge (df $ VAR, 6, 7)% in% Teilzeichenfolge ((df $ CYRB + c (19,20)), 3, 4),] Das könnte auch funktionieren und ist ein bisschen weniger tippen als Hinzufügen eines OR zu meinem anderen. – cory

Antwort

1

Vielleicht so etwas wie folgt aus:

dat %>% 
    mutate(varnum = as.numeric(substr(VAR,6,7)), 
     varnum = ifelse(varnum<50, varnum + 2000, varnum + 1900)) %>% 
    filter((varnum - CYRB) %in% 19:20) %>% 
    select(-varnum) 
ID CYRB  VAR VALUE 
1 1 1983 ATTEN02  0 
2 2 1979 ATTEN98  1 
+0

das funktioniert perfekt, danke! – Milhouse

Verwandte Themen