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