【发布时间】:2020-06-07 13:43:32
【问题描述】:
我有多个数据帧(在 130 个观察点处移动不同持续时间的温度),并希望通过将以下代码应用于每个数据帧来生成所有数据的月平均值 - 然后将结果放入一个数据帧中。我一直在尝试使用 for 循环来做到这一点,但没有得到任何结果。我对 R 比较陌生,如果有人能帮助我解决这个问题,我真的很感激。
这是一个数据框的一瞥:
head(maxT2016[,1:5])
X X0 X1 X2 X3
1 20160101 26.08987 26.08987 26.08987 26.08987
2 20160102 25.58242 25.58242 25.58242 25.58242
3 20160103 25.44290 25.44290 25.44290 25.44290
4 20160104 26.88043 26.88043 26.88043 26.88043
5 20160105 26.60278 26.60278 26.60278 26.60278
6 20160106 24.87676 24.87676 24.87676 24.87676
str(maxT2016)
'data.frame': 274 obs. of 132 variables:
$ X : int 20160101 20160102 20160103 20160104 20160105 20160106 20160107 20160108 20160109 20160110 ...
$ X0 : num 26.1 25.6 25.4 26.9 26.6 ...
$ X1 : num 26.1 25.6 25.4 26.9 26.6 ...
$ X2 : num 26.1 25.6 25.4 26.9 26.6 ...
$ X3 : num 26.1 25.6 25.4 26.9 26.6 ...
这是我用于单个数据框的代码:
library(dplyr)
library(lubridate)
library(tidyverse)
maxT10$X <- as.Date(as.character(maxTsma10$X), format="%Y%m%d")
monthlyAvr <- maxT10 %>%
group_by(month=floor_date(date, "month")) %>%
summarise(across(X0:X130, mean, na.rm=TRUE)) %>%
slice_tail(n=6) %>%
select(-month)
monthlyAvr2 <- as.data.frame(t(montlyAvr))
colnames(monthlyAvr2) <- c("meanT_Apr", "meanT_May", "meanT_Jun", "meanT_Jul", "meanT_Aug",
"meanT_Sep")
本质上,我想将所有所有数据帧放入一个列表中并通过所有数据帧运行该函数,然后将这些输出排序到一个数据帧中。我遇到了 lapply 函数作为替代方案,但对 for-loop 感觉更舒服。
d = list(maxT10, maxT20, maxT30, maxT60 ... ...)
for (i in 1:lengh(d)){
}
MonthlyAvrT <- cbind(maxT10, maxT20, maxT30, maxT60... ... )
【问题讨论】: