我嘗試轉換日期格式
tt=structure(list(gr = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), date = c("2021-01-02 11:53:53.0000000",
"2021-01-02 11:54:00.0000000", "2021-01-02 10:00:46.0000000",
"2021-01-02 10:00:23.0000000", "2021-01-02 10:09:00.0000000",
"2021-01-02 11:05:01.0000000", "2021-01-02 11:03:49.0000000",
"2021-01-02 13:24:02.0000000", "2021-01-02 13:24:02.0000000",
"2021-01-02 13:39:40.0000000", "2021-01-02 13:39:40.0000000",
"2021-01-02 13:39:40.0000000", "2021-01-02 13:39:40.0000000",
"2021-01-02 13:39:40.0000000", "2021-01-02 13:39:40.0000000",
"2021-01-02 13:24:02.0000000", "2021-01-02 13:24:02.0000000",
"2021-01-02 13:24:02.0000000", "2021-01-02 13:24:02.0000000",
"2021-01-02 12:57:00.0000000"), metric = c(23749.14, 1000, 3050,
1550, 8900, 1550, 0, 300, 0, 499, 5450, 300, 0, 499, 599, 599,
6050, 300, 599, 1400)), class = "data.frame", row.names = c(NA,
-20L))
我用這種方式,但是出了點問題
tibble(tt) %>%
mutate(date = mdy(date),
date_time = ymd_hms(format(date, "%Y-%m-%d 00:00:00")),
week_num = week(date),
weekday = weekdays(date)) %>%
select(sales_count, date_time, date, week_num, weekday)
并得到了錯誤
Problem with `mutate()` input `index_date`.
i All formats failed to parse. No formats found.
i Input `index_date` is `dmy(date)`
和帶有 NA 的變數。但我需要結果是這樣的
metric date_time date week_num weekday gr
1 10 2021-01-01 00:00:00 2021-01-01 1 Friday 2
2 4 2021-01-01 00:00:00 2021-01-01 1 Friday 2
3 8 2021-01-01 00:00:00 2021-01-01 1 Friday 2
4 6 2021-01-01 00:00:00 2021-01-01 1 Friday 2
5 4 2021-01-01 00:00:00 2021-01-01 1 Friday 2
6 4 2021-01-01 00:00:00 2021-01-01 1 Friday 2
7 4 2021-01-01 00:00:00 2021-01-01 1 Friday 2
8 3 2021-01-01 00:00:00 2021-01-01 1 Friday 2
9 1 2021-01-01 00:00:00 2021-01-01 1 Friday 2
10 5 2021-01-01 00:00:00 2021-01-01 1 Friday 2
11 2 2021-01-01 00:00:00 2021-01-01 1 Friday 2
獲得所需輸出的正確性如何?謝謝。
uj5u.com熱心網友回復:
剝離那些.0000000,substr然后進行您需要的轉換lubridate::ymd_hms():
tt %>%
dplyr::mutate(date2 = base::substr(date, 1, 19)) %>%
dplyr::mutate(date3 = lubridate::ymd_hms(date2))
uj5u.com熱心網友回復:
usingmdy()是錯誤的格式。正確的是ymd_hms()
因此建議:
library(dplyr)
library(lubridate)
tibble(tt) %>%
mutate(date_time = ymd_hms(date),
date = as_date(date),
week_num = week(date),
weekday = weekdays(date))
輸出是:
# A tibble: 20 × 6
gr date metric date_time week_num weekday
<int> <date> <dbl> <dttm> <dbl> <chr>
1 2 2021-01-02 23749. 2021-01-02 11:53:53 1 Saturday
2 2 2021-01-02 1000 2021-01-02 11:54:00 1 Saturday
3 2 2021-01-02 3050 2021-01-02 10:00:46 1 Saturday
4 2 2021-01-02 1550 2021-01-02 10:00:23 1 Saturday
5 2 2021-01-02 8900 2021-01-02 10:09:00 1 Saturday
6 2 2021-01-02 1550 2021-01-02 11:05:01 1 Saturday
7 2 2021-01-02 0 2021-01-02 11:03:49 1 Saturday
8 2 2021-01-02 300 2021-01-02 13:24:02 1 Saturday
9 2 2021-01-02 0 2021-01-02 13:24:02 1 Saturday
10 2 2021-01-02 499 2021-01-02 13:39:40 1 Saturday
11 2 2021-01-02 5450 2021-01-02 13:39:40 1 Saturday
12 2 2021-01-02 300 2021-01-02 13:39:40 1 Saturday
13 2 2021-01-02 0 2021-01-02 13:39:40 1 Saturday
14 2 2021-01-02 499 2021-01-02 13:39:40 1 Saturday
15 2 2021-01-02 599 2021-01-02 13:39:40 1 Saturday
16 2 2021-01-02 599 2021-01-02 13:24:02 1 Saturday
17 2 2021-01-02 6050 2021-01-02 13:24:02 1 Saturday
18 2 2021-01-02 300 2021-01-02 13:24:02 1 Saturday
19 2 2021-01-02 599 2021-01-02 13:24:02 1 Saturday
20 2 2021-01-02 1400 2021-01-02 12:57:00 1 Saturday
uj5u.com熱心網友回復:
使用 lubridate 函式的方法略有不同
library(tidyverse)
library(lubridate)
tt %>%
mutate(date = as.POSIXct(date, "%Y-%m-%d %H:%M:%OS", tz = "UTC"),
weekday = lubridate::wday(date, label = TRUE, abbr = FALSE),
week = lubridate::week(date))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447557.html
標籤:r
上一篇:為基于離散資料的x軸設定限制
