r比较数据框与当前年份月份的最大年份/月份

时间:2020-08-04 09:10:01

标签: r date max

我有一个与下面类似的数据框,并且想将年/月的最大值与当前年月进行比较。问题是,对于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))

任何人都有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:1)

不确定是否要此输出:

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 

答案 1 :(得分:1)

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

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"