我正在尝试将多列中的字符串数据合并到一个摘要列中,但我希望忽略NA和重复项。数据是变化的,并且重复数据和数量的NA在数据集和列之间变化。我在下面粘贴了一个可重复的数据示例:
# example data
data <- data.frame(id = c(1:4), A = c("one", "two", "threeA"), B = c(NA, "two", "threeB"), C = c(NA, NA, NA))
data
id A B C
1 1 <NA> <NA> NA
2 2 one <NA> NA
3 3 two two NA
4 4 threeA threeB NA
# desired result
id D
1 1 <NA>
2 2 one
3 3 two
4 4 threeA, threeB
我真的很难同时完成这两件事(删除dupes和NA&#)。
我主要使用dplyr
,但对其他建议持开放态度。我尝试过使用paste
和mutate
:
data %>%
transmute(id, D = paste( A, B, C , sep = ", ") )
然而,为'NA'
值粘贴NA
文字并重复粘贴 - 而答案here似乎过于复杂和昂贵(我有数万行)。
我尝试在group_by()
以及summarise()
中使用dplyr
和unique()
的组合(必须先取消列出数据))和paste()
如下:
data %>%
group_by(id) %>%
summarize(D = paste( unique( unlist( A, B, C )) , sep = ", ")
)
这也会粘贴NAs,但我可以在以后轻松删除它,但它只会粘贴找到的FIRST唯一值,而不是所有唯一值。
有关如何实现这一目标的任何建议吗?