r - 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
我宁愿想要一个表格,它不仅会显示frequency
of,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
解决方案
如果你想坚持使用基数 R,你可以用tapply()
a 找到 b 的平均值,然后cbind()
用你排序的 data.frame:
ave_b <- tapply(df$b,df$a,mean)
new_df <- cbind(sortted_a, ave_b)
推荐阅读
- linux-kernel - 为 Linux 编译树外驱动程序的详细信息
- microsoft-graph-api - Mircrosoft Graph API:列出驱动器中的所有 DriveItems:badRequest
- rust - Rust:错误[E0495]:由于需求冲突,无法推断 autoref 的适当生命周期
- excel - 这个 VBA 函数总是返回 0 的答案
- r - 如何使用 ggplot 绘制矩阵
- javascript - 不是使用字符串的模板语法的函数错误
- android - 清单合并失败并出现多个错误,请参阅日志 AndroidManifest.xml:requires a placeholder replacement but no value for
- excel - VBA Excel标记选择但复制下一列
- amazon-web-services - AWS - ECS:列出集群及其 Amazon EC2 实例
- android - 以矩形裁剪位图图像