R中如何将日期间隔转换为月份数值存入数据框列
R计算日期间隔月份存入数据框的代码修正方案
现有代码问题
你编写的for循环报错核心原因是调用日期列时未指定所属数据框,R环境无法单独识别Enrollment_Begin、Enrollment_End变量。
方案1:修正版for循环
如果你需要保留循环写法,调整代码如下:
# 提前加载lubridate库 library(lubridate) for (row in 1:nrow(SU_students)){ SU_students$enroll_months[row] <- interval(SU_students$Enrollment_Begin[row], SU_students$Enrollment_End[row]) %/% months(1) }
方案2:更高效的向量化写法(推荐)
lubridate的interval函数原生支持向量输入,无需循环即可完成整列计算,代码更简洁、执行效率更高:
library(lubridate) # 先确保两列都是日期格式,如果是字符串需要先转换,示例用ymd适配"年-月-日"格式,其他格式可换用mdy/dmy等 SU_students$Enrollment_Begin <- ymd(SU_students$Enrollment_Begin) SU_students$Enrollment_End <- ymd(SU_students$Enrollment_End) # 一行完成整列月份间隔计算,返回向下取整的整数月份 SU_students$enroll_months <- interval(SU_students$Enrollment_Begin, SU_students$Enrollment_End) %/% months(1)
如果需要保留小数形式的月份间隔,把%/%替换为/即可
内容的提问来源于stack exchange,提问作者Fasika Minda
相关产品推荐
相关产品推荐

