r - 如何在将多个列值粘贴在一起时省略 NA 值?

标签 r na

我有一个数据框 dd2有数百列,我需要做的是将所有这些列值粘贴在一起,省略任何 NA值。如果我做这样的事情

apply(dd2, 1, paste, collapse=",")

它实际上包括 NA s 为 "NA"字符串。我想避免这种情况。我也可以按如下所示做,但这会期望我一次为每个单独的列工作以获得结果。
result <- cbind(    
    dd2, 
    combination = paste(dd2[,2], replace(dd2[,3], is.na(dd2[,3]), ""), sep = ",")
)

有什么有效的方法可以做到吗?这是示例数据:
dd2 <- structure(c("A", "B", "C", "D", "E", "AK2", "HFM1", NA, "TRR", 
"RTT", NA, "PPT", "TRR", "RTT", NA, "PPT", NA, NA, "GGT", NA), .Dim = c(5L, 
4L), .Dimnames = list(NULL, c("sample_id", "plant", "animal", 
"more")))

最佳答案

你可以试试 na.omit()省略值,然后粘贴。另外,您可以使用 toString() ,因为它相当于 paste(..., collapse = ", ") .

apply(dd2, 1, function(x) toString(na.omit(x)))
# [1] "A, AK2, PPT"      "B, HFM1, PPT"     "C, TRR"          
# [4] "D, TRR, RTT, GGT" "E, RTT"   

如果您有正在使用的特定列,则
apply(dd2[, cols], 1, function(x) toString(na.omit(x)))

关于r - 如何在将多个列值粘贴在一起时省略 NA 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34428924/

相关文章:

r - 最新 gganimate : How to have a fixed plot in the background?

linux - 数据框中的列表列表

r - 如何在表中包含 NA 数据

r - 了解两个 aggregate() 语法如何处理包含 NA 值的数据框

r - 读取 .csv 时,用 NA 替换缺失值的最佳方法是什么?

R:删除具有非缺失变量完全重叠的重复行

r - data.table 按组填充其他行的缺失值

r - 如何在R中提取杂乱PDF的特定部分?

r - 为什么条件均值(条件模式)或随机效应的图看起来像这样?

r - 基于数据变量绘制具有颜色和形状的点