r - 一次聚合数据框中的多列计算不同列的不同统计信息 - R
问题描述
我正在尝试执行一个简单的练习,即按第一列聚合数据框中的列。每列都使用汇总统计信息进行汇总,但它们并不相同。例如,几列我需要平均值,几列我需要标准偏差,几列我需要最大值,等等。我在 R 中使用带有聚合函数的文档,但由于某种原因无法得到它。
你能帮我吗?
附件是一个简单的示例数据集。出于说明目的,我需要按“名称”列进行汇总。Var1 我需要平均值,Var2 我需要标准差,Var3 我需要最大值,Var4 我想要总和
name v1 v2 v3 v4 v5
a 78 74 43 76 61
b 50 84 76 73 35
c 4 55 4 86 32
d 23 29 81 73 55
e 36 68 27 70 96
# A tibble: 11 x 5
name v1 v2 v3 v4
<fct> <dbl> <dbl> <int> <int>
1 a 78 NaN 43 76
2 b 50 NaN 76 73
3 c 4 NaN 4 86
4 d 23 NaN 81 73
5 e 36 NaN 27 70
6 f 13 NaN 34 77
7 g 2 NaN 57 79
8 h 72 NaN 29 3
9 i 17 NaN 56 14
10 j 87 NaN 36 13
11 k 9 NaN 74 41
解决方案
我们可以使用dplyr
灵活性
library(dplyr)
df1 %>%
group_by(name) %>%
summarise(v1 = mean(v1, na.rm = TRUE),
v2 = sd(v2, na.rm = TRUE), v3 = max(v3, na.rm = TRUE),
v4 = sum(v4, na.rm = TRUE))
如果要为不同的功能阻止多个列,请使用across
df1 %>%
group_by(name) %>%
summarise(across(c(v1, v2), mean, na.rm = TRUE),
v3 = sd(v3, na.rm = TRUE),
across(c(v4, v5), sum, na.rm = TRUE))
或使用collap
来自collapse
library(collapse)
collap(df1, ~ name, custom = list(fmean = c("v1", "v2"),
fsd = "v3", fsum = c("v4", "v5")))
推荐阅读
- apache-spark - 当 hdfs 卷为 100% 时回收损坏的表
- javascript - 单击 Jquery 中搜索结果的任何位置时隐藏搜索结果
- path - 我无法选择使用 Java 8 打开。它转到 Internet Explorer,我陷入了一个循环。我该怎么办?
- python - 功能未给出预期结果,单元测试失败
- c# - 如何在其他模型中加入模型列?
- sharepoint - SharePoint 中是否有支持 .sql 文件?
- codeigniter - 如何在codeigniter的pre_controller钩子中获取基本url
- python - 在 Python 中的单词列表中查找三个单词
- regex - 如何使用 Ant replaceregexp 任务检查行首
- node.js - 错误:ER_PARSE_ERROR:您的 SQL 语法有错误