You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言DataFrame按指定最新日期时间过滤报错求助

问题分析与解决

错误根源

  1. 重复列名引发转换失败:你定义的数据框里有两列都叫c1,其中第二列是AK/AN这类非日期字符串。执行mutate(across(c1, mdy_hm))时,会强制把这列非日期文本转成日期格式,直接触发character string is not in a standard unambiguous format错误。
  2. 过滤时类型不匹配:直接用字符串和日期类型的列做比较,虽然lubridate有自动解析逻辑,但显式转换能彻底避免格式歧义问题。

修正后的代码

library(lubridate)
library(dplyr)

# 先修正列名,避免重复
df <- data.frame(
  date_col = c("1/12/2023 1:26", "1/16/2023 1:26", "1/11/2023 1:40", "1/18/2023 2:05", 
               "1/24/2023 2:05", "1/25/2023 2:10"),
  region_col = c("AK","AN","DD","MA","DE","NY")
)

# 仅对日期列做格式转换
df2 <- df %>% mutate(date_col = mdy_hm(date_col)) 
# 显式将过滤条件转为日期类型后再比较
df2 <- df2 %>% filter(date_col >= mdy_hm("1/24/2023 2:05"))

额外提示

  • R允许重复列名,但会导致后续数据处理逻辑混乱,建议始终使用唯一列名;
  • 日期处理时,显式调用格式转换函数(如mdy_hm)比依赖自动解析更稳定,尤其面对非标准格式的日期字符串时。

内容的提问来源于stack exchange,提问作者potro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 23:23:18