首页 > 解决方案 > 根据R中的其他列创建新的字符列?

问题描述

关于基于其他列创建列的类似问题已被提出。但是,似乎没有人能解决我的具体问题。

我正在尝试创建一个新列,它将混合其他列并变成一个字符。希望我下面的例子能解释我的意思。

如果我们有一个如下所示的数据框:

dfTest <- data.frame(
  var = c("milk", "coffee", "honey", NA, "bread"),
  value = c(2 , 7, 1, 4, 10)
)
> dfTest
     var value
1   milk     2
2 coffee     7
3  honey     1
4   <NA>     4
5  bread    10

我想要做的是创建一个新列,它将同时包含varvalue。具体来说,如果var不是NA,那么我希望新列显示为:varvalue。如果varNA,那么我只希望新列条目是value. 例如,我的新数据框看起来像这样:

   var   value     newCol
1   milk     2   milk ≤ 2
2 coffee     7 coffee ≤ 7
3  honey     1  honey ≤ 1
4   <NA>     4          4
5  bread    10 bread ≤ 10

关于我如何做到这一点的任何建议?

标签: r

解决方案


你可以使用tidyr::unite-

tidyr::unite(dfTest, newCol, var, value, sep = ' ≤ ', na.rm = TRUE, remove = FALSE) 

#      newCol    var value
#1   milk ≤ 2   milk     2
#2 coffee ≤ 7 coffee     7
#3  honey ≤ 1  honey     1
#4          4   <NA>     4
#5 bread ≤ 10  bread    10

ifelse也可以工作-

transform(dfTest, newCol = ifelse(is.na(var), value, paste(var, value, sep = ' ≤ ')))

推荐阅读