我有一个列ym1为“202301”,ym2为“202201”,这两个列都是字符数据类型。我想以月的形式计算这两者之间的差值。
8ehkhllq1#
您将需要tidyverse,其中包含lubridate软件包。假设我的数据如下,我将其命名为df
tidyverse
lubridate
df
ym1 ym2 1 202301 202201
请按照以下步骤操作;1.通过从原始列中提取子字符串,将两列都格式化为YYYY-MM1.将此字符串YYYY-MM转换为Date对象1.使用lubridate中的interval函数查找开始日期和结束日期之间的间隔。1.将interval输出除以1 month(使用%/%进行整数除法),给予两列之间的月数
YYYY-MM
Date
interval
month
%/%
new_df <- df %>% mutate(ym1 = paste(substring(ym1, 1, 4), substring(ym1, 5, 6), sep = '-')) %>% mutate(ym1 = as.Date(ym1, "%Y-%M")) %>% mutate(ym2 = paste(substring(ym2, 1, 4), substring(ym2, 5, 6), sep = '-')) %>% mutate(ym2 = as.Date(ym2, "%Y-%M")) %>% mutate(month_diff = interval(ymd(ym2), ymd(ym1)) %/% months(1))
输出如下所示;
ym1 ym2 month_diff 1 2023-03-10 2022-03-10 12
1条答案
按热度按时间8ehkhllq1#
您将需要
tidyverse
,其中包含lubridate
软件包。假设我的数据如下,我将其命名为
df
请按照以下步骤操作;
1.通过从原始列中提取子字符串,将两列都格式化为
YYYY-MM
1.将此字符串
YYYY-MM
转换为Date
对象1.使用
lubridate
中的interval
函数查找开始日期和结束日期之间的间隔。1.将
interval
输出除以1month
(使用%/%
进行整数除法),给予两列之间的月数输出如下所示;