R lubridate 看到错误的行数

R lubridate seeing the wrong number of rows

这是我正在使用的数据框。我只包括前六行。我收到的错误消息与这一小部分数据相同。

structure(list(Date.time = c("3/3/22 16:03", "3/4/22 23:41", 
"3/14/22 16:32", "3/23/22 11:44", "3/23/22 13:02", "3/23/22 13:14"
)), row.names = c(NA, 6L), class = "data.frame")

我正在使用 lubridate 库,我正在尝试将 'm/d/y hms' 格式 (Excel) 的这一列转换为 'ymd' 格式R 更喜欢。

library(lubridate)

我正在尝试创建一个 ymd 格式的新变量,我指定 lubridate 正在查看 mdy hms。

file$Date.time2 <- lubridate::ymd(file$Date.time, "mdy_hms")

但是,我收到此错误消息。

All formats failed to parse. No formats found.Error in `$<-.data.frame`(`*tmp*`, Date.time2, value = c(NA_real_, NA_real_,  : 
  replacement has 7 rows, data has 6

我查看了这个数据框的长度,正如我所料,它确实有六行,因为我使用了 head() 函数。

length(file$Date.time) # evaluates to 6

我也可以确认这个文件的class是一个dataframe

class(file) # dataframe

整个数据范围有 8077 列,而 lubridate 告诉我同样的错误消息说替换有 8078 行。

我以这两种方式尝试了 运行 代码,认为如果我使用新的向量而不是相同的向量,错误消息可能会消失。

file$Date.time <- lubridate::ymd(file$Date.time, "mdy_hms")
file$Date.time2 <- lubridate::ymd(file$Date.time, "mdy_hms")

列表的字符串中没有秒,所以你需要使用没有秒的lubridate函数:

library(lubridate)

file <- structure(list(Date.time = c("3/3/22 16:03", "3/4/22 23:41", 
"3/14/22 16:32", "3/23/22 11:44", "3/23/22 13:02", "3/23/22 13:14"
)), row.names = c(NA, 6L), class = "data.frame")

file$Date.time2 <- lubridate::mdy_hm(file$Date.time)

这是一个有用的备忘单,其中包含这些功能:https://rawgit.com/rstudio/cheatsheets/main/lubridate.pdf