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"] )
使用 dplyr
的 mutate
应用变换 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")
如何对“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"] )
使用 dplyr
的 mutate
应用变换 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")