R strptime 到 00h00 格式

R strptime to 00h00 Format

如何对“15/09/2016 20h26”这样的字符进行 strptime?

我在 strptime 官方手册和 Stack overflow 周围搜索了这个,但我没有找到任何可以帮助我的东西。

我试过这段代码:

u <- ("15/09/2016 20h26")
strptime(u, format = "%d/%m/%Y %H:%M")

strptime(u, format = "%d/%m/%Y %H'h'%M")

有人知道我需要做什么吗?

编辑:

首先,对问题的清晰度表示抱歉。

我试着用一个例子来描述我的问题,但它似乎是一个错字。

我有一个包含 400 个时间观测值的 txt 文件,格式为“20/01/2016 14h00”。我正在尝试使用 strptime:

将其转换为日期

这是我的代码:

y <- read.table('materias_data.txt', sep = ";")
l <- strptime(y, format = "%d/%m/%Y %Hh%M")

我在 运行 代码时遇到了这个错误:

Error in strptime(y, format = "%d/%m/%Y %Hh%M") : input string is too long

我怎样才能正确转换 data.frame?

编辑 2:解决方案

阅读评论我意识到问题是什么:

strptime 不适用于 data.frame 但它适用于字符。

解决这个问题的步骤是

y <- read.table('materias_data.txt', sep = ";")
l <- strptime(y[,1], format = "%d/%m/%Y %Hh%M")
df <- data.frame(l)

谢谢

相对较新的 anytime package I added to CRAN 无需额外帮助即可自动解析:

R> anytime("15/09/2016 20h26")
[1] "2016-09-15 20:26:00 CDT"
R> 

另一个不错的功能是它还会自动从 factor(或 ordered)转换为 character

因此,如果您有一个 data.frame df,其中有一列值是这样的,例如,一个名为 datestr 的列,那么只需传递该列:

R> anytime( df[, "datestr"] )

您也可以将其分配给 data.frame 中的新列:

R> df[, "parsedtime"] <- anytime( df[, "datestr"] )

使用 dplyrmutate 应用变换 data.frame-wise,或使用应用函数之一:

y <- y %>% mutate(col_name = as.POSIXct(col_name, format = "%d/%m/%Y %Hh%M"))
# or
parsed <- sapply(y$col_name, strptime, format = "%d/%m/%Y %Hh%M")