簡體   English   中英

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM