合并或变异摘要 (dplyr)
Posted
技术标签:
【中文标题】合并或变异摘要 (dplyr)【英文标题】:merge or mutate a summary (dplyr) 【发布时间】:2015-08-23 02:49:18 【问题描述】:我总是不确定如何使用 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)
我经常使用merge,但有时当数据集很大时它会很慢。 有没有可能
mutate
而不是
merge ?
【问题讨论】:
是的,只要dta %>% group_by(householdid) %>% mutate( nhouse = n(), meanAgeHouse = mean(age) )
我还建议查看 data.table 包。这些东西在 data.table 中非常直接且非常快。它具有回收价值的概念,这在这里会有所帮助。
@DavidArenburg 提供的解决方案非常好,如果您想保留结果,只需使用该代码和分配 data <- code by David
。这似乎是合理的,dplyr 足够聪明且足够快,不会重新分配内存,而只是指向添加了新元素的旧对象。
@DavidArenburg 非常感谢您!请把它作为答案
【参考方案1】:
dta %>% group_by(householdid) %>% mutate( nhouse = n(), meanAgeHouse = mean(age) )
【讨论】:
以上是关于合并或变异摘要 (dplyr)的主要内容,如果未能解决你的问题,请参考以下文章
当我在`dplyr`之后加载`plyr`时,为啥汇总或变异不适用于group_by?