在R中使用POSIXct类调整datetime格式,使df2的EncounterDate匹配df1格式
解决方法
方案1:仅对齐文本格式(最简单)
如果不需要对日期做计算、排序等操作,只需要EncounterDate的字符串格式和df1的DateTime完全匹配,直接拼接时间后缀即可:
# 直接给df2的EncounterDate字段拼接 00:00 后缀 df2$EncounterDate <- paste0(df2$EncounterDate, " 00:00")
执行后df2$EncounterDate就会变成"1/1/21 00:00"这种格式,和df1的DateTime格式完全一致。
方案2:先转POSIXct时间类型(推荐用于后续时间操作)
如果你后续需要对日期做计算、筛选、排序等操作,建议先统一转为POSIXct类型,你提到的方法需要调整格式参数适配你的两位年份格式:
# 1. 将df2的EncounterDate转为POSIXct类型,自动默认时间为00:00 # 注意:两位年份对应的格式符是%y,四位年份才用%Y df2$EncounterDate_POSIX <- as.POSIXct(df2$EncounterDate, format = "%m/%d/%y") # 2. 如果需要转回和df1一致的字符串格式,执行以下代码即可 df2$EncounterDate <- format(df2$EncounterDate_POSIX, "%m/%d/%y %H:%M") # 如果需要保留个位数月份/日期不带前导零(比如1月显示为1而非01),可以改用以下代码: # df2$EncounterDate <- gsub(" 0", " ", format(df2$EncounterDate_POSIX, "%m/%d/%y %H:%M")) # df2$EncounterDate <- gsub("^0", "", df2$EncounterDate)
这种方法的优势是两个数据框的日期都转成POSIXct后,后续合并、匹配的时候不会因为文本格式的细微差异出错。
内容的提问来源于stack exchange,提问作者Ash S
相关产品推荐
相关产品推荐

