首页 > 解决方案 > R中带有平均值列的频率表

问题描述

给定df我生成的数据框如下:

set.seed(1)
b <- runif(100)
set.seed(1)
a <- sample.int(9, 100, replace = TRUE)
df <- data.frame(a,b)

我形成了如下所示的频率表但不满意:

sortted_a <- data.frame(table(df$a))
sortted_a
#  Var1 Freq
#1    1   14
#2    2    8
#3    3   10
#4    4    9
#5    5   11
#6    6   11
#7    7    5
$8    8   14
#9    9   18

我宁愿想要一个表格,它不仅会显示frequencyof,vector a而且会frequency of a与相关联一起显示averages of vector b,如下所示R

#  Var1 Freq   Ave_b
#1    1   14   0.6750
#2    2    8   0.0027
#3    3   10   0.8298
#4    4    9   0.1873
#5    5   11   0.3874
#6    6   11   0.7632
#7    7    5   0.5812
$8    8   14   0.5478
#9    9   18   0.4389

标签: rfrequencyfrequency-distribution

解决方案


如果你想坚持使用基数 R,你可以用tapply()a 找到 b 的平均值,然后cbind()用你排序的 data.frame:

ave_b <- tapply(df$b,df$a,mean)
new_df <- cbind(sortted_a, ave_b)

推荐阅读