R语言 我想计算两列之间的差值作为月差

0md85ypi  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(201)

我有一个列ym1为“202301”,ym2为“202201”,这两个列都是字符数据类型。
我想以月的形式计算这两者之间的差值。

8ehkhllq

8ehkhllq1#

您将需要tidyverse,其中包含lubridate软件包。
假设我的数据如下,我将其命名为df

ym1    ym2
1 202301 202201

请按照以下步骤操作;
1.通过从原始列中提取子字符串,将两列都格式化为YYYY-MM
1.将此字符串YYYY-MM转换为Date对象
1.使用lubridate中的interval函数查找开始日期和结束日期之间的间隔。
1.将interval输出除以1 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

相关问题