如何基于两个tibble的对应时间列计算时间差并生成新列?
解决方案:基于itemID匹配计算日期差值
你需要将两个tibble按itemID关联,计算df_1中date14与对应item在df_2中introduction_first的日期差并生成新列,以下是两种简洁的实现方式:
方法一:使用dplyr(适配tibble,推荐)
通过left_join按itemID合并数据集后,直接计算日期差值:
library(dplyr) # 合并并计算日期差 df_result <- df_1 %>% left_join(df_2, by = "itemID") %>% mutate(date_diff = date14 - introduction_first) # 查看结果 head(df_result)
运行后会在df_1基础上新增introduction_first和date_diff列,date_diff单位为天,正数表示date14晚于introduction_first,负数则相反。
方法二:使用Base R(无需额外包)
用merge函数合并后计算差值:
# 合并数据集 merged_df <- merge(df_1, df_2, by = "itemID", all.x = TRUE) # 计算日期差 merged_df$date_diff <- merged_df$date14 - merged_df$introduction_first # 查看结果 head(merged_df)
示例输出(前6行):
# A tibble: 6 × 4 itemID date14 introduction_first date_diff <dbl> <date> <date> <drtn> 1 1 2018-01-01 2018-02-13 -43 days 2 1 2018-01-15 2018-02-13 -29 days 3 1 2018-01-29 2018-02-13 -15 days 4 1 2018-02-12 2018-02-13 -1 days 5 1 2018-02-26 2018-02-13 13 days 6 1 2018-03-12 2018-02-13 27 days
内容的提问来源于stack exchange,提问作者JAdel
相关产品推荐
相关产品推荐

