聚合数据帧行时如何设置优先级?

时间:2016-05-19 12:41:22

标签: r dataframe aggregate

我需要以这种方式聚合具有多个行的数据帧的行:

假设我有两行要合并(因为它们具有相同的第一个元素):

  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(),但它只提供了诸如均值,最大等的汇总统计信息。

2 个答案:

答案 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