我有一个包含多行数据的数据框,我需要将具有相同ID的行合并。
a=read.csv("a.csv")
view(a)
ID Value1 Value2 Value3 Value4 Value5 Value6
1076 2940 NA NA 2 NA NA
1076 2940 1 A- NA 302 549
1109 2940 NA NA 3 NA NA
1109 2940 NA A- NA 700 150
我需要类似以下的结果
ID Value1 Value2 Value3 Value4 Value5 Value6
1076 2940 1 A- 2 302 549
1109 2940 NA A- 3 700 150
我已经查看了一个类似问题的答案 (合并共享信息的行)。但是我的结果出现了错误。
library(dplyr)
f <- function(x) {
x <- na.omit(x)
if (length(x) > 0) paste(x,collapse='-') else NA
}
a_merge <- a %>% group_by(ID)%>%summarise_all(list(f))
但是我遇到了以下错误。
Error: Column `Value2` can't promote group 1 to character
请帮忙。
list(unique(.[!is.na(.)]))
添加一个unique()
可能更好。 - Gregor Thomaslist
包装。我将其更改为list(if(all
。请尝试。 - akruntoString(unique(.[!is.na(.)]))
并删除list
包装器。 - akruna %>% group_by(ID) %>% summarise_all(list(~ if(all(is.na(.))) NA_character_ else toString(unique(.[!is.na(.)]))))
- akrun