r - R 中的聚合不会返回控制台上显示的实际数据
问题描述
我正在尝试从以下数据中创建一个包含平均值和计数的聚合表
> sample_data
sample percent
1 A 5
2 A 2
3 A 3
4 B 7
5 B 7
6 C 4
7 C 3
8 C 2
9 C 3
10 D 5
我用这个功能
aggregate_sample =aggregate(sample_data[,2], list(sample_data$sample), FUN=function(x) c(mn=mean(x),ln=length(x)))
从控制台输出,我确实得到了我想要的:
> aggregate_sample
Group.1 x.mn x.ln
1 A 3.333333 3.000000
2 B 7.000000 2.000000
3 C 3.000000 4.000000
4 D 5.000000 1.000000
但是,当我单击聚合样本的数据时,我只得到这个
Group.1 x
1 A 3.333333
2 B 7.000000
3 C 3.000000
4 D 5.000000
谁能帮助我如何获得正确的表格结果?
解决方案
问题是列“x”是一个matrix
有 2 列的列,正如我们c(mn=mean(x),ln=length(x)
在FUN
. 我们可以将其更改为常规 data.frame
aggregate_sample1 <- do.call(data.frame, aggregate_sample)
对于这些操作,另一种方式是dplyr
,这可以以直接的方式完成
library(dplyr)
sample_data %>%
group_by(sample) %>%
summarise(mn = mean(percent), ln = n())
或使用data.table
library(data.table)
setDT(sample_data)[, .(mn = mean(percent), ln = .N), by = sample]
推荐阅读
- javascript - 运行我的 Server.JS 时遇到问题。听力错误
- r - 复制到另一列时,R保持将日期列转换为整数
- entity-framework - DbContext 状态和全局查询过滤器
- webpack - Webpack 开发服务器无法将 watchContentBase 识别为有效选项
- javascript - Vue Component-> Export default ... 中未找到
- javascript - 我如何对进度条执行此操作?(html-css)
- angular - 来自服务调用的角度动态选择选项
- python - 指定 celery 定期任务的结束日期
- c# - 使用 Graphql 时,.net6 中的 Aspnetcore Midlleware 未反转
- php - Laravel Livewire - 最佳使用方式