如何在 R 中将时间戳从字符更改为日期时间并添加缺少的时间戳

How to change a timestamp from character to datetime in R and add missing timestamps

我有一个包含不同列的数据框。 一列称为“TIMESTAMP”。点击栏目,我看到是一个字符,往下看内容:

TIMESTAMP             Price
2003-06-20 09:19:00   5.25
2003-06-20 09:21:00   5.34
2003-06-20 09:22:00   5.43
2003-06-20 09:23:00   5.32

我想将完整的“TIMESTAMP”列转换为 as.POSIXct 这样做的原因是,我想随后在列中添加缺失的分钟数,正如您从第 1 行到第 2 行看到的,09:20:00 缺少时间戳。我想将 09:00:00 缺失的分钟数添加到 17:30:00,当然还有正确的日期。

让我们调用数据框data。 我尝试了 as.POSIXct(data$TIMESTAMP, format="%Y-%m-%d %H:%M:%S"),但我不确定它是否成功,因为数据框中的数据没有改变。

是否还有提示如何在获得正确格式后添加缺少的时间戳?

感谢您的帮助!

只要将结果分配回数据框的列,您的尝试就是正确的。这是你应该做的:

> data$TIMESTAMP <- as.POSIXct(data$TIMESTAMP, format="%Y-%m-%d %H:%M:%S")

之后,TIMESTAMP 列将具有所需的 class:

> class(data$TIMESTAMP)
[1] "POSIXct" "POSIXt" 

为了完成缺少行的数据框,您可以先构建一个包含所有预期时间的新 data.frame,然后将其合并到您的初始数据中。下面我使用 minmax 来查找日期时间范围,然后我使用 seq.POSIXt 按分钟生成完整的日期时间集。然后合并将使用初始数据框中已有的价格值:

> data_full <- data.frame(TIMESTAMP = seq.POSIXt(from=min(data$TIMESTAMP), to=max(data$TIMESTAMP), by='min'))
> data_complete <- merge(data_full, data, all.x = T)