如何在列表 R 中使用 group_by(或类似命令)
How to use group_by (or similar command) in lists R
我不得不处理超过一百个站点的气象数据集。数据结构如下所示(月份从 1 到 12,年份从 1965 到 2020):
station
month
year
hourlymax
CYBG
1
1965
8
CYBC
1
1965
6
CYKG
1
1965
3.5
CYBG
1
1965
2
CYBC
1
1965
3.5
CYKG
1
1665
4
我使用函数 split Stations <- split(all_stations, all_stations$station
,按站点拆分这个大数据集。我现在想知道是否可以将某些功能应用于列表中的所有数据集。例如,我想获取变量的月均值。我尝试了代码(列表名称是站)
for (i in 1:length(Stations)) {
group_by(month) %>%
summarise(result = mean(hourlymax) )
}
起初可能有更好的拆分数据的方法,我不知道...
任何 help/comment 真的很感激!我很新,正在学习!
由于您已准备好将原始数据帧拆分为数据帧列表,因此这适合使用 lapply
或 sapply
函数,具体取决于您希望结果是列表还是矢量。
result_vector <- sapply(Stations, function(x) {
mean(x$hourlymax)
})
或者,如果您想使用 dplyr 策略,则在原始数据帧上使用 group_by
result_df <- all_stations %>% group_by(month) %>%
summarise(result = mean(hourlymax))
我不得不处理超过一百个站点的气象数据集。数据结构如下所示(月份从 1 到 12,年份从 1965 到 2020):
station | month | year | hourlymax |
---|---|---|---|
CYBG | 1 | 1965 | 8 |
CYBC | 1 | 1965 | 6 |
CYKG | 1 | 1965 | 3.5 |
CYBG | 1 | 1965 | 2 |
CYBC | 1 | 1965 | 3.5 |
CYKG | 1 | 1665 | 4 |
我使用函数 split Stations <- split(all_stations, all_stations$station
,按站点拆分这个大数据集。我现在想知道是否可以将某些功能应用于列表中的所有数据集。例如,我想获取变量的月均值。我尝试了代码(列表名称是站)
for (i in 1:length(Stations)) {
group_by(month) %>%
summarise(result = mean(hourlymax) )
}
起初可能有更好的拆分数据的方法,我不知道...
任何 help/comment 真的很感激!我很新,正在学习!
由于您已准备好将原始数据帧拆分为数据帧列表,因此这适合使用 lapply
或 sapply
函数,具体取决于您希望结果是列表还是矢量。
result_vector <- sapply(Stations, function(x) {
mean(x$hourlymax)
})
或者,如果您想使用 dplyr 策略,则在原始数据帧上使用 group_by
result_df <- all_stations %>% group_by(month) %>%
summarise(result = mean(hourlymax))