R语言使用separate拆分日期时间列时如何保留AM/PM?
解决方案
你的问题出在separate函数默认按所有空格拆分,而你的时间字符串包含三个空格分隔的部分(日期、时间、AM/PM),但你只指定了两个输出列,默认extra="drop"会丢弃多余的部分,导致AM/PM丢失。可以通过以下两种方法解决:
方法一:用正则表达式精准拆分
使用正向断言匹配日期末尾的空格,确保只拆分一次,保留时间和AM/PM为整体:
hourlyCalories_merged %>% separate(ActivityHour, c("ActivityDay", "ActivityHour_sep"), sep="(?<=\\d{4}) ")
(?<=\\d{4}) 表示匹配四位数字(即日期中的年份)后面的空格,这样拆分后ActivityHour_sep会完整保留HH:00:00 A/PM。
方法二:设置extra="merge"参数
让separate把多余的拆分部分合并到最后一列:
hourlyCalories_merged %>% separate(ActivityHour, c("ActivityDay", "ActivityHour_sep"), sep=" ", extra="merge")
extra="merge" 会将拆分出的第三部分(AM/PM)合并到ActivityHour_sep中,避免丢失信息。
内容的提问来源于stack exchange,提问作者Brian Mak
相关产品推荐
相关产品推荐

