如何移除数据框chr类型列中的‘12:00:00 AM’时间部分?
解决方法
方法1:仅对目标列使用gsub替换
你之前的问题是把gsub直接作用于整个数据框,导致数据框结构异常。正确的做法是只针对目标列操作:
# 用列名索引替换(假设目标列名为SleepDay) bbData_sleepDay_clean$SleepDay <- gsub("12:00:00 AM", "", bbData_sleepDay_clean$SleepDay) # 或者用你定义的col2变量索引列 bbData_sleepDay_clean[[col2]] <- gsub("12:00:00 AM", "", bbData_sleepDay_clean[[col2]])
如果替换后字符串两端有多余空格,可搭配trimws清理:
bbData_sleepDay_clean[[col2]] <- trimws(gsub("12:00:00 AM", "", bbData_sleepDay_clean[[col2]]))
方法2:正确转换为日期/时间类型
你之前的as.POSIXct格式参数写错了,需要匹配原字符串的完整格式。假设原列内容是YYYY/MM/DD 12:00:00 AM这类格式,正确的转换代码如下:
# 先转换为POSIXct时间类型 bbData_sleepDay_clean[[col2]] <- as.POSIXct(bbData_sleepDay_clean[[col2]], format="%Y/%m/%d %I:%M:%S %p") # 如果只需要日期部分,再转成Date类型 bbData_sleepDay_clean[[col2]] <- as.Date(bbData_sleepDay_clean[[col2]])
注意:%I表示12小时制的小时,%p表示AM/PM标记,格式参数必须和原字符串的结构完全对应(比如原字符串用横杠分隔日期就改成%Y-%m-%d)。
内容的提问来源于stack exchange,提问作者timschlum
相关产品推荐
相关产品推荐

