R 是否有与Stata';s-egen函数?

R 是否有与Stata';s-egen函数?,r,stata,R,Stata,Stata有一个非常好的命令,egen,它可以很容易地计算观察组的统计数据。例如,可以计算每组的最大值、平均值和最小值,并将它们作为变量添加到详细数据集中。Stata命令是一行代码: by group : egen max = max(x) 我从来没有在R中找到过相同的命令。dplyr包中的summary可以很容易地计算每个组的统计数据,但是我必须运行一个循环,将统计数据与每个观察结果相关联: library("dplyr") N <- 1000 tf <- data.fram

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

by group : egen max = max(x)
我从来没有在R中找到过相同的命令。
dplyr
包中的
summary
可以很容易地计算每个组的统计数据,但是我必须运行一个循环,将统计数据与每个观察结果相关联:

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”)

N以下是几种方法:

dplyr

library(dplyr)

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

library(data.table)

dt <- data.table(tf)
dt[, max:=max(x), by=group]
这仅使用R的基:

transform(tf, max = ave(x, group, FUN = max))
数据表

library(data.table)

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

dt有许多替代方案。您的问题表明缺乏研究(您甚至没有研究dplyr包的小插曲)-1我对egen(我编写了一些函数)没有偏见,但即使从Stata的角度来看,它也只是创建变量的一个方便的材料集合。没有一个中心思想可以映射到任何可能成为R中心思想的东西上。即使是按组生成摘要统计数据的便利性,实际上也不是
egen
的定义或作用的一部分,而只是它的一些组件的一些可能。我不代表R发言,但我怀疑它的一些软件包也有点杂。我同意你的看法,但它仍然非常有用。