R - 使用 HHMMSS 格式将日期和时间字段转换为 POSIXct

标签 r datetime posixct

我有一个包含三列的数据文件,因此:

20010101 000000  0.833
20010101 000500  0.814
20010101 001000  0.794
20010101 001500  0.772
...

人眼很清楚,前两个是日期和时间。我需要将它们转换为 POSIXct(或者其他更好的东西,但我过去在 R 中处理时间戳的有限经验是使用 POSIXct)。通常,使用 read.table 将其拉入后,我会使用:
df$DateTime <- as.POSIXct(paste(df$Date, df$Time), format="%Y%m%d %H%M%S")

然而,第二列似乎失去了它的前导零(可能是通过类型强制?),因此它不能正常工作。

我看过 Combine date as integer and time as factor to POSIXct in RConverting two columns of date and time data to one ,但两者都使用带有分隔符的时间,例如 :,因此没有相同的问题。

请问如何将这些列转换为 POSIXct?

最佳答案

你非常接近。以下“简单”强制将前两列读取为字符串,从而保存前导零。

R> df <- read.table(text="20010101 000000  0.833
20010101 000500  0.814
20010101 001000  0.794
20010101 001500  0.772", 
+ header=FALSE, colClasses=c("character", "character", "numeric"), 
+ col.names=c("Date", "Time", "Val"))
R> df
      Date   Time   Val
1 20010101 000000 0.833
2 20010101 000500 0.814
3 20010101 001000 0.794
4 20010101 001500 0.772

现在你正在尝试“正常工作”:
R> df$DateTime <- as.POSIXct(paste(df$Date, df$Time), format="%Y%m%d %H%M%S")
R> df
      Date   Time   Val            DateTime
1 20010101 000000 0.833 2001-01-01 00:00:00
2 20010101 000500 0.814 2001-01-01 00:05:00
3 20010101 001000 0.794 2001-01-01 00:10:00
4 20010101 001500 0.772 2001-01-01 00:15:00
R> 

关于R - 使用 HHMMSS 格式将日期和时间字段转换为 POSIXct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16301204/

相关文章:

r - 我如何将参数传递给子集()?

r - 提取 data.table 的片段

r - R函数中有 "this"引用吗?

Python 时区感知日期时间和 UTC 转换

datetime - 如何从日期时间格式的 CSV 中删除时间

r - 转换日期时间字符串并按日期排序

r - 按不完全匹配的列合并 2 个数据框

ruby-on-rails - 将字符串转换为特定时区的日期时间

r - 在数据框列中提取部分日期

r - 无法处理 POSIXct 时区并截断 POSIXct 对象的时间