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 package 的 anytime
功能是为此而设计的:无论输入数据类型如何,都可以可靠且轻松地解析任何(合理的)时间格式,并且需要格式。我们可以演示它:
代码
## 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
>
我有一个从 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 package 的 anytime
功能是为此而设计的:无论输入数据类型如何,都可以可靠且轻松地解析任何(合理的)时间格式,并且需要格式。我们可以演示它:
代码
## 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
>