我有一個資料框,其中包含 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 次。有沒有辦法回圈這個程序?
uj5u.com熱心網友回復:
假設沒有關系(變數達到最大值的多天),這可能會滿足您的要求:
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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/482194.html
上一篇:對元組求和時輸出變數名
下一篇:回圈和If陳述句來檢查和加載包
