r - 如何将日期时间列“2019-05-01T08:00:00+00:00”拆分为两个日期和时间列?
问题描述
我试图将这种格式的日期时间列拆分2019-05-01T08:00:00+00:00
为“日期”和“时间”两列,但无济于事。列名是YearTime
,我将其编码如下:
df$Date <- as.Date(sf$YearTime)
df$Time <- format(as.POSIXct(df$YearTime), format = "%H:%M:%S")
以下是我得到的:
YearTime Date Time
2019-05-01T08:00:00+00:00 2019-05-01 00:00:00
2019-05-01T08:15:00+00:00 2019-05-01 00:00:00
我不需要00:00:00
在“时间”列下,而是需要以下格式:
YearTime Date Time
2019-05-01T08:00:00+00:00 2019-05-01 08:00:00
2019-05-01T08:15:00+00:00 2019-05-01 08:15:00
仅供参考,“时间”列有 15 分钟的间隔。知道如何实现这一目标吗?
解决方案
在 中明确指定格式as.POSIXct
。
df$YearTime <- as.POSIXct(df$YearTime, format = '%Y-%m-%dT%H:%M:%S', tz = 'UTC')
df$Date <- as.Date(df$YearTime)
df$Time <- format(df$YearTime, format = "%H:%M:%S")
df
# YearTime Date Time
#1 2019-05-01 08:00:00 2019-05-01 08:00:00
#2 2019-05-01 08:15:00 2019-05-01 08:15:00
使用lubridate
你可以使用ymd_hms
-
library(dplyr)
library(lubridate)
df %>%
mutate(YearTime = ymd_hms(YearTime),
Date = as.Date(YearTime),
Time = format(YearTime, format = "%H:%M:%S"))
数据
如果您以可重现的格式提供数据,则更容易提供帮助。
df <- structure(list(YearTime = c("2019-05-01T08:00:00+00:00",
"2019-05-01T08:15:00+00:00")), row.names = c(NA, -2L), class = "data.frame")
推荐阅读
- batch-file - NSSM 未运行批处理 Node-RED
- c++ - 如何从文件中输出第一个和最后一个完美正方形之间的数字?
- xamarin.ios - Xamarin.iOS - 更新 Visual Studio 后突然出现错误:ibtool 以代码 72 退出
- php - 从一个表中查找并提取数据并将其插入到 php 和 mysql 中的另一个表中
- javascript - 网格在 Safari 中无法正常工作移动视图
- flutter - 在颤振抛出异常中使用测试横幅广告 id - “以下 adId 的广告已经存在:0”
- postgresql - 在 JSONB 列内的数组上附加慢速更新
- spss - 如何重新编码前两位数字SPSS
- r - 如何在 gganimate 中为背景设置 alpha 参数
- flutter - 如何防止 Flutter AppBar 菜单图标与 AppBar 中的滑块重叠?