【问题标题】:Aggregating in R with conditions [duplicate]在R中聚合条件[重复]
【发布时间】:2017-02-06 14:36:18
【问题描述】:

我有一个包含以下信息的数据集:

> Column1 Column2 Sum 
a         b        50 
b         a         7 
c         a         1
d         e         8
c         a         2

我想聚合得到这个结果:

> Column1 Column2 Sum 
a         b        57 
c         a         3
d         e         8

因为a-bb-a一样

有什么办法吗?谢谢

【问题讨论】:

标签: r dataframe aggregate


【解决方案1】:

我们可以在sort 之后逐行使用aggregate 前两列

df1[1:2] <- t(apply(df1[1:2], 1, sort))
aggregate(Sum~., df1, FUN = sum)

或者使用pmax/pmin

library(dplyr)
df1 %>%
   group_by(Col1 = pmin(Column1, Column2), Col2 = pmax(Column1, Column2)) %>% 
   summarise(Sum = sum(Sum))

【讨论】:

  • 使用t(apply(df1[1:2], 1, sort)) 代替apply(df1[1:2], 2, sort) 是否有任何性能改进?
猜你喜欢
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
相关资源
最近更新 更多