我有一个包含用户信息的数据集。对于特定用户,我通常有多行或多或少的完整信息。我想根据 First_Name、Last_Name、Street 汇总属于客户的所有行,同时保留其他列的所有信息,如果特定列有两个独特的观察,我想用“,”折叠它们。

这就是 df 的样子

First_Name Last_Name Street Column1 Colum2 Colum_n

Mike       Smith      X     abc     ab     a
Mike       Smith      X     abc     ad     b
John       Smith      Y     xyz     xy     n
John       Smith      Y     xyz     xm     NA

我想要的输出是
 First_Name Last_Name Street Column1 Colum2 Colum_n

 Mike       Smith      X     abc     ab,ad     a,b
 John       Smith      Y     xyz     xy,xm       n

我想使用 dplyr 并尝试使用
df %>%
group_by(First_Name,Last_Name, Street) %>%
summarise_all(funs())

该函数的问题在于,我只能选择使用列的平均值或第一个出现的值之类的东西,这意味着值的丢失。我想要的是没有 NA 的所有唯一值的列

最佳答案

您可以编写自己的汇总函数,例如
concat_unique <- function(x){paste(unique(x), collapse=',')}
然后使用它应用它summarize_all(concat_unique)

关于r - 基于多列组合行并保留所有唯一值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53781563/

10-12 19:46