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

如何在R中更新数据框日期列格式并保留数据框结构

解决R中日期列转换后数据框未更新的问题

问题场景

数据集包含两个字段:

  • Date:字符型字段,格式为mm/dd/yyyy h:mm:ss AM/PM
  • X:数值型字段,为PSI单位的压力表读数

样本数据:

DateX
7/13/2022 5:15:59 AM0.00
7/13/2022 5:20:00 AM1.50
7/15/2022 1:00:00 PM4.00

执行as.POSIXct(df$Date, format="%m/%d/%Y %I:%M:%S %p", tz="UTC")时,代码输出正确但数据框未发生变化;尝试错误代码:

df$[df$Date] <- as.POSIXct(df$Date, format="%m/%d/%Y %I:%M:%S %p", tz="UTC") 

触发报错:

Warning: NAs produced by integer overflowWarning: NAs produced by integer overflowError in if (m < n * p && (m == 0L || (n * p)%%m)) stop(sprintf(ngettext(m, :
missing value where TRUE/FALSE needed

解决方案

正确的列赋值方式

要更新日期列或新增转换后的列,需使用标准的列赋值语法:

  1. 直接更新原Date列
    覆盖原有字符型数据,将其转换为POSIXct类型:
df$Date <- as.POSIXct(df$Date, format="%m/%d/%Y %I:%M:%S %p", tz="UTC")

若需要将显示格式固定为不带AM/PM的24小时制字符型,可搭配format()函数:

df$Date <- format(as.POSIXct(df$Date, format="%m/%d/%Y %I:%M:%S %p", tz="UTC"), "%m/%d/%Y %H:%M:%S")
  1. 新增New_Date列(保留原Date列)
    如果要保留原始日期列,新增转换后的列:
df$New_Date <- format(as.POSIXct(df$Date, format="%m/%d/%Y %I:%M:%S %p", tz="UTC"), "%m/%d/%Y %H:%M:%S")

执行后得到符合期望的结果:

DateXNew_Date
7/13/2022 5:15:59 AM0.007/13/2022 05:15:59
7/13/2022 5:20:00 AM1.507/13/2022 05:20:00
7/15/2022 1:00:00 PM4.007/15/2022 13:00:00

错误代码原因

df$[df$Date]是语法错误:$运算符后必须紧跟列名,而你用[df$Date]试图将Date列的字符值作为列名索引,导致R触发类型不匹配、数值溢出等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:10:42