R中聚合数据帧的循环
Loop for aggregated data frame in R
我有一个数据框,其中包含 58 列标记为 SD1 到 SD58 以及日期信息列(日期、年、月、日)。
我正在尝试使用以下代码查找每年每个 SD 列的最大值的日期:
maxs<-aggregate(SD1~Year, data=SDtime, max)
SDMax<-merge(maxs,SDtime)
我只需要日期,所以我创建了一个新的 df 并重新标记了该列,如下所示:
SD1Max = subset(SDMax, select = c(Year, Date))
SD1Max %>%
rename(
SD1=Date
)
我想对每个 SD 列执行相同的操作,但我不想重复这些步骤 58 次。有没有办法循环这个过程?
假设没有关系(变量达到最大值的多天)这可能会做你想要的:
library('tidyverse')
SDtime %>%
pivot_longer(
cols = matches('^SD[0-9]{1,2}$')
) %>%
group_by(name) %>%
filter(value == max(value, na.rm = TRUE)) %>%
ungroup()
之后您可能想要 pivot_wider
。
我有一个数据框,其中包含 58 列标记为 SD1 到 SD58 以及日期信息列(日期、年、月、日)。
我正在尝试使用以下代码查找每年每个 SD 列的最大值的日期:
maxs<-aggregate(SD1~Year, data=SDtime, max)
SDMax<-merge(maxs,SDtime)
我只需要日期,所以我创建了一个新的 df 并重新标记了该列,如下所示:
SD1Max = subset(SDMax, select = c(Year, Date))
SD1Max %>%
rename(
SD1=Date
)
我想对每个 SD 列执行相同的操作,但我不想重复这些步骤 58 次。有没有办法循环这个过程?
假设没有关系(变量达到最大值的多天)这可能会做你想要的:
library('tidyverse')
SDtime %>%
pivot_longer(
cols = matches('^SD[0-9]{1,2}$')
) %>%
group_by(name) %>%
filter(value == max(value, na.rm = TRUE)) %>%
ungroup()
之后您可能想要 pivot_wider
。