R:将 date/time 格式 0000-00-00T00:00:00Z 转换为 POSIXct

R: Converting date/time format 0000-00-00T00:00:00Z to POSIXct

我有一个从 R 中的数据框导出为 .csv 的数据集。该数据集包含一个日期+时间列,在将其导出为 .csv 文件。当我将保存的 .csv 文件导入回 R 时,日期+时间列的格式已更改为 character 并且如下所示: 000-00-00T00:00:00Z (见下面部分的标题我的数据)。

ID  Timestamp               X_mean      X_min   X_max
1   2021-06-30T08:00:00Z    -0.4313333  -5.914  4.129
2   2021-06-30T08:00:01Z    -0.3817667  -5.641  4.082
3   2021-06-30T08:00:02Z    -0.2770667  -0.484  -0.109
4   2021-06-30T08:00:03Z    -0.3686667  -0.863  -0.148
5   2021-06-30T08:00:04Z    -0.2696667  -0.41   -0.102
6   2021-06-30T08:00:05Z    -0.4150000  -0.734  -0.145

如果可能的话,我真的很想将日期+时间返回到 POSIXct 变量,所以它再次看起来像这样:YYYY-MM-DD HH:MM:SS,没有'T ' 和 'Z'。

我已尝试应用给定的解决方案 here and here,但它们似乎不起作用,或者我在更改代码以使其适用于我的数据框时做错了什么。我最后只得到了 NA。

有什么方法可以将格式改回 POSIXct

我们可以使用 ymd_hms 来自 lubridate

df1$Timestamp <- lubridate::ymd_hms(df1$Timestamp)

anytime packageanytime 功能是为此而设计的:无论输入数据类型如何,都可以可靠且轻松地解析任何(合理的)时间格式,并且需要格式。我们可以演示它:

代码

## re-create your data
dat <- read.table(text="ID  Timestamp               X_mean      X_min   X_max
1   2021-06-30T08:00:00Z    -0.4313333  -5.914  4.129
2   2021-06-30T08:00:01Z    -0.3817667  -5.641  4.082
3   2021-06-30T08:00:02Z    -0.2770667  -0.484  -0.109
4   2021-06-30T08:00:03Z    -0.3686667  -0.863  -0.148
5   2021-06-30T08:00:04Z    -0.2696667  -0.41   -0.102
6   2021-06-30T08:00:05Z    -0.4150000  -0.734  -0.145", header=TRUE)

## add a Datetime column
dat$datetime <- anytime::anytime(dat$Timestamp)

## look at dat
dat

输出

> dat <- read.table(text="ID  Timestamp               X_mean      X_min   X_max
+ 1   2021-06-30T08:00:00Z    -0.4313333  -5.914  4.129
+ 2   2021-06-30T08:00:01Z    -0.3817667  -5.641  4.082
+ 3   2021-06-30T08:00:02Z    -0.2770667  -0.484  -0.109
+ 4   2021-06-30T08:00:03Z    -0.3686667  -0.863  -0.148
+ 5   2021-06-30T08:00:04Z    -0.2696667  -0.41   -0.102
+ 6   2021-06-30T08:00:05Z    -0.4150000  -0.734  -0.145", header=TRUE)
> dat$datetime <- anytime::anytime(dat$Timestamp)
> dat
  ID            Timestamp    X_mean  X_min  X_max            datetime
1  1 2021-06-30T08:00:00Z -0.431333 -5.914  4.129 2021-06-30 08:00:00
2  2 2021-06-30T08:00:01Z -0.381767 -5.641  4.082 2021-06-30 08:00:01
3  3 2021-06-30T08:00:02Z -0.277067 -0.484 -0.109 2021-06-30 08:00:02
4  4 2021-06-30T08:00:03Z -0.368667 -0.863 -0.148 2021-06-30 08:00:03
5  5 2021-06-30T08:00:04Z -0.269667 -0.410 -0.102 2021-06-30 08:00:04
6  6 2021-06-30T08:00:05Z -0.415000 -0.734 -0.145 2021-06-30 08:00:05
>