【问题标题】:Dropping variables in r with long data用长数据删除 r 中的变量
【发布时间】:2016-08-03 17:27:56
【问题描述】:

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

     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 变量。我一直在尝试使用过滤器(来自 dplyr)和 if else 的组合来做到这一点,但我就是无法正确使用语法,并且通常会出现错误。

【问题讨论】:

  • df[substring((df$CYRB + 19), 3, 4) == substring(df$VAR, 6, 7), ] 也许是这样的。在那里添加一个或| 20 就可以了。
  • df[substring(df$VAR, 6, 7 )%in% substring((df$CYRB + c(19,20)), 3, 4), ] 这也可能有效,而且比在我的另一个中添加 OR 少一点。

标签: r if-statement dplyr panel


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    相关资源
    最近更新 更多