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

Dropping variables in r with long data

我正在处理长格式的纵向数据,出于我想做的事情的目的,我实际上是在尝试将其转换为面板数据集。了解一下我目前拥有的东西:

     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 是一个虚拟变量,表示个体 i 在采访年份是否在上学。我的计划是只保留与受访者 19 岁或 20 岁时对应的访谈变量。对于 1983 年出生的人来说,这意味着只保留 ATTEN02 变量。我一直在尝试使用 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)
  ID CYRB     VAR VALUE
1  1 1983 ATTEN02     0
2  2 1979 ATTEN98     1