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

使用长数据删除r中的变量,r,if-statement,dplyr,panel,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 ATTEN

我正在处理长格式的纵向数据,为了我想做的事情,我基本上在尝试将其转换为面板数据集。让我了解一下我目前的情况:

     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岁时对应的访谈变量。e、 g.对于1983年出生的个体,这意味着只保留ATTENT02变量。我一直在尝试使用filter(来自dplyr)和if-else的组合来实现这一点,但我就是无法获得正确的语法,通常会以错误告终

可能是这样的:

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)
df[substring((df$CYRB+19),3,4)=substring(df$VAR,6,7),]
可能是这样的。在其中添加一个or(
|
),持续20分钟,您就完成了设置。
df[substring(df$VAR,6,7)%in%substring((df$CYRB+c(19,20)),3,4),]
这可能也很有效,而且比在我的另一个字符串中添加or要少一些。
  ID CYRB     VAR VALUE
1  1 1983 ATTEN02     0
2  2 1979 ATTEN98     1