提问人:sehne 提问时间:7/13/2023 最后编辑:sehne 更新时间:8/14/2023 访问量:45
在 R 中单独使用日期和时间
Separate date and time in R
问:
我有一个数据集,其中的列由日期和时间组成为“字符”类(列“有效”。我想将此列分为两列,一列用于日期,一列用于时间。但值应该保留(而不是改变)。 这是从 head(data, 10) 获得的数据的前 10 个输出
> head(data, 10)
station valid speed
1 PHNL 2021-01-01 00:00 14.95
2 PHNL 2021-01-01 00:05 21.85
3 PHNL 2021-01-01 00:10 17.25
4 PHNL 2021-01-01 00:15 19.55
5 PHNL 2021-01-01 00:20 16.10
6 PHNL 2021-01-01 00:25 17.25
7 PHNL 2021-01-01 00:30 12.65
8 PHNL 2021-01-01 00:35 17.25
9 PHNL 2021-01-01 00:40 18.40
10 PHNL 2021-01-01 00:45 17.25
我用作为。POSIXct 和我得到了预期的日期结果,但时间列只是 00:00,这意味着时间没有像原始列中那样更新。我应该如何解决这个问题?请提前帮助和感谢。
data$date=as.Date(data$valid)
data$time=format(as.POSIXct(data$valid),
format="%H:%M")
结果
station valid speed date time
1 PHNL 2021-01-01 00:00 14.95 2021-01-01 00:00
2 PHNL 2021-01-01 00:05 21.85 2021-01-01 00:00
3 PHNL 2021-01-01 00:10 17.25 2021-01-01 00:00
4 PHNL 2021-01-01 00:15 19.55 2021-01-01 00:00
5 PHNL 2021-01-01 00:20 16.10 2021-01-01 00:00
6 PHNL 2021-01-01 00:25 17.25 2021-01-01 00:00
答:
0赞
Mark
8/14/2023
#1
以下是几种方法:
# load libraries
pacman::p_load(tidyverse, hms)
# create it as a tibble, so we can see the column types
read.table(text =
" station valid speed
1 PHNL '2021-01-01 00:00' 14.95
2 PHNL '2021-01-01 00:05' 21.85
3 PHNL '2021-01-01 00:10' 17.25
4 PHNL '2021-01-01 00:15' 19.55
5 PHNL '2021-01-01 00:20' 16.10
6 PHNL '2021-01-01 00:25' 17.25
7 PHNL '2021-01-01 00:30' 12.65
8 PHNL '2021-01-01 00:35' 17.25
9 PHNL '2021-01-01 00:40' 18.40
10 PHNL '2021-01-01 00:45' 17.25", header = TRUE) |> as_tibble() -> df
mutate(df, valid = as.POSIXct(valid, format = "%Y-%m-%d %H:%M"),
date = as.Date(valid),
time = format(valid, "%H:%M"))
# or
mutate(df, valid = as_datetime(valid, format = "%Y-%m-%d %H:%M"),
date = as_date(valid),
time = as_hms(format(valid, "%H:%M:%S")))
输出:
# A tibble: 10 × 5
station valid speed date time
<chr> <dttm> <dbl> <date> <time>
1 PHNL 2021-01-01 00:00:00 15.0 2021-01-01 00'00"
2 PHNL 2021-01-01 00:05:00 21.8 2021-01-01 05'00"
3 PHNL 2021-01-01 00:10:00 17.2 2021-01-01 10'00"
4 PHNL 2021-01-01 00:15:00 19.6 2021-01-01 15'00"
5 PHNL 2021-01-01 00:20:00 16.1 2021-01-01 20'00"
6 PHNL 2021-01-01 00:25:00 17.2 2021-01-01 25'00"
7 PHNL 2021-01-01 00:30:00 12.6 2021-01-01 30'00"
8 PHNL 2021-01-01 00:35:00 17.2 2021-01-01 35'00"
9 PHNL 2021-01-01 00:40:00 18.4 2021-01-01 40'00"
10 PHNL 2021-01-01 00:45:00 17.2 2021-01-01 45'00"
如果您有任何问题,请随时发表评论!
评论
time
data$time <- sub('^.+ (.*)$', '\\1', data$valid)