使用长数据删除r中的变量

时间:2016-08-03 17:27:56

标签: r if-statement dplyr panel

我正在处理长格式的纵向数据,而我的目的就是我要做的事情。我基本上试图将其转换为面板数据集。想知道我现在拥有的东西:

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

ATTENXX是一个虚拟变量,表示个人是否在面试当年上学。我的计划是只保留与受访者为19或20时相对应的访谈变量。对于1983年出生的人来说,这意味着只保留ATTEN02变量。我一直试图用过滤器(来自dplyr)和if if的组合来做这件事,但我只是无法正确获得语法并且通常最终会出错。

1 个答案:

答案 0 :(得分: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