使用聚合获取另一列中ID组在一列中的平均值

  • 本文关键字:一列 平均值 ID 获取 r
  • 更新时间 :
  • 英文 :


我正在尝试创建一个新的数据框架,用于获得每个官方数字的平均罚分。

STATS<-UPDATED_PENALTY%>%
aggregate(UPDATED_PENALTY, by = list(UPDATED_PENALTY$OFFICIAL_NUMBER, UPDATED_PENALTY$PENALTY), FUN = mean)

但它给了我以下错误

Error in mean.default(X[[i]], ...) : 'trim' must be numeric of length one
In addition: There were 50 or more warnings (use warnings() to see the first 50)

如果您想要每个官方数字的平均分数,请尝试:

示例数据

set.seed(123)
updated_penalty <- data.frame(official_number = rep(1:5, each = 5),
penalty = rnbinom(25, mu = 5, size = 1.5))

基本R

tapply(updated_penalty$penalty, updated_penalty$official_number, mean)

输出:

# 1   2   3   4   5 
# 5.0 3.8 1.4 4.2 5.4 

如果你想把它放在数据帧中:

vals <- tapply(updated_penalty$penalty, updated_penalty$official_number, mean)
new_df <- data.frame(ref_id = rownames(vals),
mean_penalties = vals)

输出:

#   ref_id mean_penalties
# 1      1            5.0
# 2      2            3.8
# 3      3            1.4
# 4      4            4.2
# 5      5            5.4

DPLYR

updated_penalty %>% 
group_by(official_number) %>% 
summarize(mean = mean(penalty))

输出:

#   official_number  mean
#             <int> <dbl>
# 1               1   5  
# 2               2   3.8
# 3               3   1.4
# 4               4   4.2
# 5               5   5.4

最新更新