【发布时间】:2014-08-01 10:13:22
【问题描述】:
Stata 有一个非常好的命令,egen,它可以很容易地计算观察组的统计数据。例如,可以计算每个组的最大值、平均值和最小值,并将它们作为变量添加到详细数据集中。 Stata 命令是一行代码:
by group : egen max = max(x)
我从来没有在 R 中找到相同的命令。dplyr 包中的summarise 可以轻松计算每个组的统计信息,但是我必须运行一个循环来将统计信息与每个观察结果相关联:
library("dplyr")
N <- 1000
tf <- data.frame(group = sample(1:100, size = N, replace = TRUE), x = rnorm(N))
table(tf$group)
mtf <- summarise(group_by(tbl_df(tf), group), max = max(x))
tf$max <- NA
for (i in 1:nrow(mtf)) {
tf$max[tf$group == mtf$group[i]] <- mtf$max[i]
}
有人有更好的解决方案吗?
【问题讨论】:
-
有很多选择。您的问题表明缺乏研究(您甚至没有研究 dplyr 包小插图)。 -1
-
我对@987654326@ 没有偏见(我编写了一些函数),但即使从Stata 的角度来看,它也只是用于创建变量的便利集合。没有一个中心思想可以映射到 R 中的任何中心思想。即使是按组生成汇总统计数据的便利实际上也不是
egen的定义或角色的一部分,而只是它的某些组件可能实现的东西。我不会为 R 说话,但我怀疑它的一些包也有点杂。 -
我同意你的观点,但它仍然非常有用。