字符型日期转日期格式求助:R语言合并数据集时转换失败
问题分析与解决方案
你忽略的核心问题是没有匹配crimes$Date的实际格式,以及部分函数的参数使用错误,导致日期转换失败。
你的代码错误点拆解
- 格式字符串匹配错误:
- 用
format='%I:%M %p'只匹配了时分和AM/PM,完全未包含日期部分,无法解析完整日期。 - 用
"%Y-%m-%d %I:%M:%S %p"时,格式中的%Y-%m-%d是「年-月-日」结构,但crimes$Date实际是「日/月/年」(或「月/日/年」)的结构,格式不匹配导致解析为NA。
- 用
parse_date_time参数误用:
该函数第一个参数必须是要转换的日期字符串向量,而非格式;同时必须指定orders参数定义日期各部分的顺序。- 无格式调用
as.POSIXct:
R无法自动识别01/01/2022 12:00:00 AM这类非标准格式,必须明确给出匹配的格式字符串。
正确的转换步骤
处理crimes$Date(格式为DD/MM/YYYY HH:MM:SS AM/PM)
根据实际日期顺序选择对应格式:
# 若为日/月/年格式(例:01/01/2022代表2022年1月1日) crimes$Date <- as.Date(crimes$Date, format = "%d/%m/%Y %I:%M:%S %p") # 若为月/日/年格式(例:02/03/2022代表2022年2月3日) crimes$Date <- as.Date(crimes$Date, format = "%m/%d/%Y %I:%M:%S %p")
上述代码会直接将字符型日期转换为仅保留年月日的Date类型,自动丢弃时分秒信息。
处理第一个数据框的Date列(格式为YYYY-MM-DD HH:MM:SS)
该格式属于R可识别的标准格式,直接转换即可:
df1$Date <- as.Date(df1$Date)
验证与合并
转换完成后,两个数据框的Date列均为Date类型,格式统一为YYYY-MM-DD,此时可正常合并数据集。
内容的提问来源于stack exchange,提问作者user19536418
相关产品推荐
相关产品推荐

