【问题标题】:Store values from different variables in one variable将不同变量的值存储在一个变量中
【发布时间】:2022-01-22 18:08:06
【问题描述】:

我正在使用一个将国家特定信息存储在不同变量中的数据集,我想将其组合成一个变量。感觉这应该是一个很容易的练习,但我想不通,我在这里找不到任何答案。

假设数据如下所示:

df <- data.frame(country = c("BE", "BE", "BE", "NL", "NL", "NL"),
                 year = c(2010, 2010, 2010, 2010, 2010, 2010),
                 party_NL = c(NA, NA, NA, "A", "B", "B"),
                 party_BE = c("C", "D", "E", NA, NA, NA)) 
  country year party_NL party_BE
1      BE 2010     <NA>        C
2      BE 2010     <NA>        D
3      BE 2010     <NA>        E
4      NL 2010        A     <NA>
5      NL 2010        B     <NA>
6      NL 2010        B     <NA>

我需要的是以下内容:

  country year party_NL party_BE party
1      BE 2010     <NA>        C     C
2      BE 2010     <NA>        D     D
3      BE 2010     <NA>        E     E
4      NL 2010        A     <NA>     A
5      NL 2010        B     <NA>     B
6      NL 2010        B     <NA>     B

猜测必须应用一些循环。再一次,这听起来很容易,我提前道歉。

谢谢

【问题讨论】:

    标签: r for-loop dplyr


    【解决方案1】:

    您可以在 dplyr 中使用coalesce

    df %>% 
      mutate(party = coalesce(party_NL, party_BE))
    

    输出:

      country year party_NL party_BE party
    1      BE 2010     <NA>        C     C
    2      BE 2010     <NA>        D     D
    3      BE 2010     <NA>        E     E
    4      NL 2010        A     <NA>     A
    5      NL 2010        B     <NA>     B
    6      NL 2010        B     <NA>     B
    

    【讨论】:

    • 太棒了!不知道这个功能
    【解决方案2】:

    使用dplyr 中的mutate,这样就可以了:

    require(dplyr)
    df %>% 
      mutate(party = ifelse(is.na(party_NL), party_BE, party_NL))
    

    【讨论】:

    • 谢谢!这似乎也有效。但是,我的实际变量列表要长得多,这使得代码有点长并且容易出错。
    猜你喜欢
    • 2014-02-22
    • 2012-07-10
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2022-11-17
    相关资源
    最近更新 更多