📅  最后修改于: 2023-12-03 15:38:25.056000             🧑  作者: Mango
在 R 中使用 Data.table 聚合数据时,我们经常会遇到需要按照多列进行聚合的情况。本文将介绍如何在 Data.table 中聚合多列数据。
我们首先需要加载 Data.table 包,并生成一个示例数据集。这里我们生成一个包含 id
、group
和 value
三列的数据集:
library(data.table)
# 生成示例数据
set.seed(123)
dt <- data.table(id = rep(1:3, 3),
group = rep(letters[1:3], each = 3),
value = round(runif(9), 2))
生成的数据集如下所示:
> dt
id group value
1: 1 a 0.29
2: 2 a 0.79
3: 3 a 0.36
4: 1 b 0.82
5: 2 b 0.55
6: 3 b 0.71
7: 1 c 0.06
8: 2 c 0.28
9: 3 c 0.89
首先,我们可以先介绍如何按单列聚合。假设我们想要按照 group
列进行聚合,并计算每个组中的平均值:
# 按照 group 列聚合,计算平均值
dt[, .(mean_value = mean(value)), by = group]
执行代码后,得到以下结果:
group mean_value
1: a 0.4800000
2: b 0.6933333
3: c 0.4100000
这里的 by
参数指定了按照哪一列进行聚合。.(mean_value = mean(value))
指定了计算平均值,并将结果存储在一个名为 mean_value
的列中。
接下来,我们介绍如何按多列进行聚合。假设我们想要按照 id
和 group
两列进行聚合,并计算每组的总和与平均值:
# 按照 id 和 group 列聚合,计算总和和平均值
dt[, .(sum_value = sum(value), mean_value = mean(value)), by = .(id, group)]
执行代码后,得到以下结果:
id group sum_value mean_value
1: 1 a 0.29 0.2900000
2: 2 a 0.79 0.7900000
3: 3 a 0.36 0.3600000
4: 1 b 0.82 0.8200000
5: 2 b 0.55 0.5500000
6: 3 b 0.71 0.7100000
7: 1 c 0.06 0.0600000
8: 2 c 0.28 0.2800000
9: 3 c 0.89 0.8900000
这里的 by
参数将两列进行了组合。我们同时计算了每组的总和和平均值,结果存储在 sum_value
和 mean_value
两列中。
由于本文只是简单介绍,这里并没有对 Data.table 的所有聚合操作做详细介绍,读者可以参考 Data.table 的官方文档来了解更多的操作方式。