合并或更改摘要(dplyr)

合并或更改摘要(dplyr),r,merge,dplyr,summary,mutated,R,Merge,Dplyr,Summary,Mutated,我总是不知道如何使用dplyr检索摘要 让我们假设我有个人和家庭的总结 dta = rbind(c(1, 1, 45), c(1, 2, 47), c(2, 1, 24), c(2, 2, 26), c(3, 1, 67), c(4, 1, 20), c(4, 2, 21), c(5, 3, 7) ) dta = as.data.frame(dta) colnames(dta) = c('householdid', 'id', 'age') house

我总是不知道如何使用dplyr检索摘要

让我们假设我有个人和家庭的总结

dta = rbind(c(1, 1, 45), 
  c(1, 2, 47), 
  c(2, 1, 24),
  c(2, 2, 26), 
  c(3, 1, 67), 
  c(4, 1, 20),
  c(4, 2, 21),
  c(5, 3, 7)
 ) 
dta = as.data.frame(dta)
colnames(dta) = c('householdid', 'id', 'age')

 householdid id age
           1  1  45
           1  2  47
           2  1  24
           2  2  26
           3  1  67
           4  1  20
           4  2  21
           4  3   7
假设我想计算家庭中的人数和家庭的平均年龄,然后在原始数据集中重复使用这些信息

dta %>% 
  group_by(householdid) %>% 
  summarise( nhouse = n(), meanAgeHouse = mean(age) ) %>% 
  merge(., dta, all = T)
我经常使用合并,但有时当数据集很大时,合并速度很慢。
有可能吗

mutate 
而不是

merge ? 

是的,只要做
dta%>%groupby(householdid)%>%mutate(nhouse=n(),meanAgeHouse=mean(age))
我还建议查看data.table包。这些东西非常直观,在data.table中速度非常快。它有回收价值的概念,这在这里会很有帮助。@DavidArenburg提供的解决方案非常好,如果您想保留结果,只需将该代码与赋值一起使用
data@DavidArenburg非常感谢!请把它作为答案
dta %>% group_by(householdid) %>% mutate( nhouse = n(), meanAgeHouse = mean(age) )