r 将数据框的最大年/月与当年月份进行比较

r compare max year / month from dataframe to current year month

我有一个类似于下面的数据框,我想将年/月的最大值与当前年月进行比较。问题是,对于 max(month),我得到 12(显然),对于组合的最大年/月,我得到 2020_12。但我需要的是合并年/月的最大值(所以2020_03)

df <- data.frame(ID = c(1:6),
                 year = c(2019,2019,2019,2020,2020,2020),
                 month = c(10,11,12,1,2,3))

谁有简单的解决方案?

不确定您是否需要此输出:

df %>%
  group_by(year) %>%
  mutate(max = paste0(year, "_", max(month)))


    # A tibble: 6 x 4
# Groups:   year [2]
     ID  year month max    
  <int> <dbl> <dbl> <chr>  
1     1  2019    10 2019_12
2     2  2019    11 2019_12
3     3  2019    12 2019_12
4     4  2020     1 2020_3 
5     5  2020     2 2020_3 
6     6  2020     3 2020_3 

您可以先创建一个日期对象:

df <- transform(df, date = as.Date(paste(1, month, year, sep = "-"), '%d-%m-%Y'))

计算max日期

max(df$date)
#[1] "2020-03-01"

要获取 df 中最大行的索引,您可以使用 which.max.

ind <- which.max(df$date)
ind
#[1] 6

如果你想要特定格式的输出:

paste(df$year[ind], df$month[ind], sep = "_")
#[1] "2020_3"