R 按多列分组数据

R 按多列分组数据,r,data.table,dplyr,plyr,R,Data.table,Dplyr,Plyr,我有许多按列名称分组的数据记录 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 %>% s

我有许多按列名称分组的数据记录

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))
DT%select(Name,姓氏)%%>%group\u by(Name,姓氏)%%>%summary(SUM\u value=SUM(value,na.rm=TRUE))
试试这个:

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

我认为,如果选择名称和姓氏,那么最终数据中就不会有所需的值之和。

ave(df$value,as.numeric(as.factor(粘贴(df$name,df$name))),FUN=sum)
聚合(df$value,by=list(df$name,df$name),sum)
您对
选择的调用正在删除值列,这样就不能在
摘要
中调用它。删除链的
select
部分应该可以。@d.b它工作得很好,但我会重新排列列。谢谢!@George删除选定部分时,结果是一个(1*1)数据帧,它不是所需的目标。我尝试了您的解决方案,data2(1列1行)刚刚显示了值的总和,这不是它所期望的;(如果你运行我的代码,那就不可能了,因为data2只有一行和一列。我甚至把data2放在这里,你可以看到你已经得到了每个名字姓氏组合的总和