2016-08-03 9 views
1

私は長形式のデータを扱っています。私は何をしたいのですか?私は本質的にそれをパネルのデータセットに変換しようとしています。私は現時点で持っているもののアイデアを与えるために:ATTENXXは、私はインタビューの年に学校に通っていた個々のかどうかを示すダミー変数である長いデータを含むrの変数をドロップする

 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 
    .... 

。私の計画は、回答者が19歳または20歳の時に対応するインタビューの変数だけを保持することです。 1983年に生まれた個人にとって、これはATTEN02変数だけを保持することを意味します。私はフィルター(dplyrから)の組み合わせでそれをやろうとしていましたが、それ以外の場合は構文を正しく取得できず、通常はエラーが発生します。

+0

'のDF [ストリング((DF $のCYRB + 19)、3、4)==ストリング(DFます$ VAR、6、7 )、 'それのようなものかもしれない。そこに '|'を20個追加すると設定されます。 – cory

+0

'%d substring(df $ VAR、6、7)%substring(df $ CYRB + c(19,20))、3、4)、 'それはうまくいくかもしれないし、私の他のものにORを加える。 – cory

答えて

1

たぶん、このような何か:

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

これは完璧に動作します、ありがとう! – Milhouse

関連する問題