我有一个从 R 中的数据框中导出为 .csv
的数据集。该数据集包含一个 date+time 列,在将其导出为 .csv
文件之前,将其设置为 format 为 POSIXct
。当我将保存的 .csv
文件导入回 R 时,date+time 列的 format 已更改为 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
如果可能的话,我真的很想将 date+time 返回到一个 POSIXct 变量,所以它再次看起来像这样:YYYY-MM-DD HH:MM:SS
,没有“T”和“Z”。
我已尝试应用 https://stackoverflow.com/questions/21667212/converting-datetime-string-to-posixct-date-time-format-in-r?noredirect=1&lq=1 和 https://stackoverflow.com/questions/65506672/formatting-date-time-in-r 给出的解决方案,但它们似乎不起作用,或者我在更改代码以使其适用时做错了我的数据框。我只以NA结束。
有没有办法可以将 format 改回 POSIXct
?
回答1
我们可以从 lubridate
使用 ymd_hms
df1$Timestamp <- lubridate::ymd_hms(df1$Timestamp)
回答2
https://cloud.r-project.org/package=anytime 的anytime
功能就是为此而设计的:可靠且容易地解析任何(合理的)时间format,无论输入数据类型如何,都需要一个format。我们可以演示一下:
代码
## 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
>