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