如何对列表里的某一列进行分组,并举个简单例子
时间: 2024-03-22 15:42:43 浏览: 62
列表中的每个元素可以看作是一个数据框,因此可以使用类似数据框的方法对列表中的某一列进行分组。以下是一个简单的例子:
假设我们有一个列表 `lst`,其中包含两个数据框 `df1` 和 `df2`,每个数据框都包含两列数据:`name` 和 `score`。我们想要按照 `name` 列对每个数据框进行分组,并计算每个人的平均分。可以使用以下代码实现:
```r
library(dplyr)
# 创建示例数据
df1 <- data.frame(name=c("Alice", "Bob", "Charlie", "Alice", "Bob"), score=c(80, 70, 90, 85, 75))
df2 <- data.frame(name=c("Alice", "Bob", "Charlie", "Charlie", "Charlie"), score=c(90, 80, 95, 85, 90))
lst <- list(df1=df1, df2=df2)
# 对列表中的每个数据框按照 name 列进行分组,并计算每个人的平均分
lst_grouped <- lapply(lst, function(x) x %>% group_by(name) %>% summarize(avg_score=mean(score)))
# 输出结果
print(lst_grouped)
```
输出结果如下:
```
$df1
# A tibble: 3 x 2
name avg_score
<chr> <dbl>
1 Alice 82.5
2 Bob 72.5
3 Charlie 90
$df2
# A tibble: 2 x 2
name avg_score
<chr> <dbl>
1 Alice 90
2 Bob 80
3 Charlie 90.0
```
这段代码使用 `dplyr` 包中的 `group_by` 函数对列表中的每个数据框按照 `name` 列进行分组,并使用 `summarize` 函数计算每个分组的平均分,最后使用 `lapply` 函数将结果保存在 `lst_grouped` 列表中。输出结果是一个新的列表,其中包含两个数据框,每个数据框都包含两列数据:`name` 和 `avg_score`。
阅读全文