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

R语言col_datetime/as.POSIXct转日期值全为NA的问题求助

日期时间字符串转POSIXct后全为NA的问题

操作流程与问题

  • 加载数据:列出指定路径下的CSV文件,读取为数据框列表后合并
  • 转换尝试:使用col_datetime(format = "%m/%d/%y %H:%M")和as.POSIXct()函数,将格式为%m/%d/%y %H:%M的日期字符串转为datetime类型
  • 异常情况:列的数据类型显示为POSIXct,但所有日期值均为NA
  • 已做排查:多次验证格式匹配、确认源数据无隐藏字符,尝试转换为Date类型,问题仍未解决

加载数据代码

cdf <- list.files(path = '/cloud/project/cap1/Capstone-dnb', pattern = '\\.csv$',  full.names = TRUE)

list_of_dfs <- lapply(cdf, read.csv)

combined_df <- do.call(rbind, list_of_dfs)

str(combined_df)

数据示例(dput(head(cdf))输出)

> dput(head(cdf))
structure(list(ride_id = c("1068AB1B8F12FE23", "4DE50A4FC7687A0D", 
"1C78B5F337CBFC93", "D231CE7990A3AA52", "2.30E+15", "EB21BB139ABF6174"
), rideable_type = c("docked_bike", "docked_bike", "docked_bike", 
"docked_bike", "docked_bike", "docked_bike"), started_at = structure(c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), tzone = "", class = c("POSIXct", 
"POSIXt")), ended_at = structure(c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_), tzone = "UTC", class = c("POSIXct", 
"POSIXt")), start_station_name = c("Sheffield Ave & Wellington Ave", 
"Daley Center Plaza", "Sheridan Rd & Irving Park Rd", "Delano Ct & Roosevelt Rd", 
"Clark St & Leland Ave", "Clark St & Leland Ave"), start_station_id = c(115, 
81, 240, 626, 326, 326), end_station_name = c("Ashland Ave & Belle Plaine Ave", 
"Dearborn St & Van Buren St", "Broadway & Sheridan Rd", "Wabash Ave & Roosevelt Rd", 
"Southport Ave & Irving Park Rd", "Clark St & Bryn Mawr Ave"), 
    end_station_id = c(246, 624, 256, 59, 318, 460), start_lat = c(41.9363, 
    41.8842, 41.9542, 41.8675, 41.9671, 41.9671), start_lng = c(-87.6527, 
    -87.6296, -87.6544, -87.6322, -87.6674, -87.6674), end_lat = c(41.9561, 
    41.8763, 41.9528, 41.8672, 41.9542, 41.9836), end_lng = c(-87.6688, 
    -87.6292, -87.65, -87.626, -87.6644, -87.6692), member_casual = c("casual", 
    "member", "member", "member", "member", "member"), ride_length = structure(c(46800, 
    14400, 7200, 7200, 25200, 28800), class = c("hms", "difftime"
    ), units = "secs"), day_of_week = c(4, 4, 4, 4, 4, 4)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))
> 

更新补充(7/6 8:50)

单独尝试过以下两行代码,print(cdf)显示started_at列数据类型为POSIXct,但spec(cdf)显示类型不符合预期:

cdf$started_at <- col_datetime(cdf$started_at, format = "%m/%d/%y %H:%M")

cdf$started_at <- as.POSIXct(cdf$started_at, format = "%m/%d/%y %H:%M")

已确认col_datetime的格式参数与源数据日期字符串格式完全匹配,也尝试过转换为Date类型,排除了源数据存在隐藏字符的可能,但转换后日期值仍然全部为NA。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:34:58