繁体   English   中英

是否有相当于Stata的egen功能?

[英]is there an equivalent to Stata's egen function?

Stata有一个非常好的命令, egen ,它可以很容易地计算观察组的统计数据。 例如,可以计算每个组的最大值,平均值和最小值,并将它们作为变量添加到详细数据集中。 Stata命令是一行代码:

by group : egen max = max(x)

我从来没有发现在R相同的命令summarisedplyr包可以很容易地计算每个组的统计数据,但后来我不得不运行一个循环的统计关联到每个观察:

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

library(dplyr)

tf %>% group_by(group) %>% mutate(max = max(x))

AVE

这只使用R的基数:

transform(tf, max = ave(x, group, FUN = max))

data.table

library(data.table)

dt <- data.table(tf)
dt[, max:=max(x), by=group]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM