本文介绍了有没有与Stata的eGen功能相当的功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

library(dplyr)

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

大道

这只使用R:的基数

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

data.table

library(data.table)

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

这篇关于有没有与Stata的eGen功能相当的功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 18:59