【问题标题】:grouping data by multiple columns [duplicate]按多列分组数据[重复]
【发布时间】:2017-07-06 14:54:47
【问题描述】:

我有许多数据记录要按列名分组。

Name  Surname  value
al     adams    120
al     adams    514
al     bats     220
al     bats     120
bill   cox      440
bill   cox      320
bill   brit     320

我想按姓名和姓氏分组(并保留它们),以及价值的总和。 这是我的代码。我没有得到想要的显示。

DT<-base_AA_P1 %>%  select(Name, Surname) %>% group_by(Name, Surname) %>%  summarize(SUM_value = sum(value, na.rm = TRUE))

【问题讨论】:

  • ave(df$value, as.numeric(as.factor(paste(df$Name, df$Surname))), FUN = sum) aggregate(df$value, by = list(df$Name, df$Surname), sum)
  • 您对select 的调用正在删除值列,因此无法在summarize 中调用它。删除链的select 部分应该可以工作。
  • @ d.b 它工作得很好,但我会重新整理这些列。谢谢!
  • @George 删除选择部分时,结果是一个 (1*1) 数据框,它不是所需的目标。

标签: r data.table dplyr plyr


【解决方案1】:

试试这个:

data = data.frame(Name = c("al","al","al","al","bill","bill","bill"),
                  Surname = c("adams","adams","bats","bats","cox","cox","brit"),
                  value = c(120,514,220,120,440,320,320))


library(dplyr)

data2 = data %>%
  group_by(Name,Surname)%>%
  summarise(new_value = sum(value))

data2

    Name Surname new_value
1     al   adams       634
2     al    bats       340
3   bill    brit       320
4   bill     cox       760

我认为如果您选择姓名和姓氏,您将不会在您想要的最终数据中获得值的总和。

【讨论】:

  • 我已经尝试过您的解决方案,data2 (1 col ans 1 row) 刚刚显示了值的总和,这不是它所期望的。 ;(
  • 如果您运行我的代码,那么 data2 不可能只有 1 行和 1 列。我什至把 data2 是什么,你可以看到你已经得到了每个名字 - 姓氏组合的总和
猜你喜欢
  • 2012-01-23
  • 2019-08-29
  • 1970-01-01
  • 2021-12-09
  • 2020-02-27
  • 2021-08-28
  • 2014-08-06
  • 2013-09-18
相关资源
最近更新 更多