我需要以这种方式聚合具有多个行的数据帧的行:
假设我有两行要合并(因为它们具有相同的第一个元素):
x1=c(ID1,1,3,2,1,NA);
x2=c(ID1,2,2,3,NA,NA);
我想合并它们的值,结果是在碰撞的情况下(碰撞=两个行在元素中都有非NA值)更喜欢第二个元素中具有更高值的行中的值(即X2)。
因此,在示例中,这两个特定行的聚合结果将是:
x12=c(ID1,2,2,3,1,NA)
有人可以帮忙吗?
我尝试了aggregate()
,但它只提供了诸如均值,最大等的汇总统计信息。
答案 0 :(得分:1)
您可以将max
用作aggregate
功能的功能。
数据:
x1=c('ID1',1,2,1,NA)
x2=c('ID1',3,3,NA,NA)
data <- data.frame(rbind(x1, x2), stringsAsFactors = FALSE)
集结:
aggregate(data[,2:5], by = list(name = data$X1), FUN = max, na.rm = TRUE)
结果:
name X2 X3 X4 X5
1 ID1 3 3 1 <NA>
答案 1 :(得分:0)
您可以通过包sqldf
使用SQL。
使用sql
您可以group by
ID和select
{1}}您提到的值。
max