我有一个与下面类似的数据框,并且想将年/月的最大值与当前年月进行比较。问题是,对于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))
任何人都有一个简单的解决方案吗?
答案 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"