есть ли эквивалент функции egen Stata?
Stata имеет очень хорошую команду,egen
, что позволяет легко вычислять статистику по группе наблюдений. Например, можно вычислить max, mean и min для каждой группы и добавить их в качестве переменной в подробный набор данных. Команда Stata представляет собой одну строку кода:
by group : egen max = max(x)
Я никогда не находил ту же команду в р. summarise
на dplyr
пакет упрощает вычисление статистики для каждой группы, но затем я должен запустить цикл, чтобы связать статистика для каждого наблюдения :
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]
}
есть ли у кого-нибудь лучшее решение ?
1 ответов
вот несколько подходов:
dplyr
library(dplyr)
tf %>% group_by(group) %>% mutate(max = max(x))
ave
Это использует только базу R:
transform(tf, max = ave(x, group, FUN = max))
данные.таблица
library(data.table)
dt <- data.table(tf)
dt[, max:=max(x), by=group]