如何在 R 的列表中按组获取平均值
Posted
技术标签:
【中文标题】如何在 R 的列表中按组获取平均值【英文标题】:How can I get the mean by groups in a list in R 【发布时间】:2021-04-20 18:03:50 【问题描述】:我有一个这样的列表:
Years | sallary |
---|---|
1 | 121 |
12 | 4343 |
25 | 1341 |
23 | 12 |
15 | 325 |
2 | 574 |
4 | 5473 |
8 | 347 |
30 | 352 |
29 | 237 |
3 | 734 |
10 | 2469 |
11 | 1239 |
5 | 2456 |
20 | 231 |
6 | 9381 |
28 | 1284 |
13 | 1295 |
9 | 129 |
7 | 931 |
19 | 1293 |
27 | 1239 |
14 | 124 |
24 | 512 |
18 | 912 |
26 | 8321 |
17 | 12383 |
22 | 419 |
16 | 129 |
more than 30 years | 12394 |
21 | 1239 |
抱歉,列表很大,但我的列表更大,我必须确保没有人给我硬编码的列表。 我想要的是一个具有分组年份平均值的列表。
group1 <- c("less than 1 year", "1", "2", "3", "4", "5")
group2 <- c("6", "7", "8", "9", "10")
...
| Years | sallary |
|:---- |:------:|
| group1 | e.g. 1295 |
| group2 | e.g. 12012 |
| group3 | e.g. 8521 |
| group4 | e.g. 2491 |
| group5 | e.g. 12349 |
| group6 | e.g. 1299 |
I amm sorry for this list but otherwise it gives me an error if I do not put the table inside the code block... But that is the list I want.
其他答案无济于事,因为它们通过相同的行计算平均值。但我有一个字符串。
感谢您的任何指点。
【问题讨论】:
【参考方案1】:我们根据组向量替换“年”。使用mget
将所有“组”向量放入list
,将list
转换为两列data.frame
(stack
),然后与原始数据进行连接,替换“年”列使用“值”,将其用作分组列,summarise
用作“工资”列
library(dplyr)
df2 <- stack(mget(ls(pattern = '^group\\d+$')))[2:1]
names(df2)[2] <- 'Years'
df1 %>%
left_join(df2, by = 'Years') %>%
group_by(Years = ind) %>%
summarise(sallary = mean(sallary, na.rm = TRUE))
【讨论】:
以上是关于如何在 R 的列表中按组获取平均值的主要内容,如果未能解决你的问题,请参考以下文章