将不同变量的值存储在一个变量中

Posted

技术标签:

【中文标题】将不同变量的值存储在一个变量中【英文标题】: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

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

谢谢

【问题讨论】:

【参考方案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))

【讨论】:

谢谢!这似乎也有效。但是,我的实际变量列表要长得多,这使得代码有点长并且容易出错。

以上是关于将不同变量的值存储在一个变量中的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 awk 中使用两个不同的字段分隔符并将两者的值存储在变量中?

Streamlit:如何将变量的值存储在缓存中

无法将字典中的值存储在变量中

SQL 数据库存储不同类型的值(在单个字段中或模拟为单个字段)

C语言和Python语言在存储变量方面的不同

如何将 DT_R8 存储在 SSIS 中的变量中