我有以下資料表。
| 時間戳 | 能量_KWh |
|---|---|
| 2021-01-01 00:00:00 | 10 |
| 2021-01-01 00:30:00 | 11 |
| 2021-01-01 01:00:00 | 9 |
| 2021-01-01 01:30:00 | 8 |
| 2021-01-01 02:00:00 | 9 |
| 2021-01-01 02:30:00 | 13 |
| 2021-01-02 00:00:00 | 16 |
| 2021-01-02 00:30:00 | 19 |
| 2021-01-02 01:00:00 | 90 |
| 2021-01-02 01:30:00 | 81 |
| 2021-01-02 02:00:00 | 1 |
| 2021-01-02 02:30:00 | 11 |
我想將時間部分更改為列.. 像這樣..
| 日期 | 00:00:00 | 00:30:00 | 01:00:00 | 01:30:00 | 02:00:00 | 02:30:00 | 03:00:00 | 03:30:00... |
|---|---|---|---|---|---|---|---|---|
| 2021-01-01 | 10 | 11 | 9 | 8 | ||||
| 2021-01-02 | 16 | 19 | 90 | 81 |
時間一整天都在繼續……應該有 48 列(24 小時 x 2)
如果有人可以幫助解決這個問題,我將不勝感激。
謝謝...
uj5u.com熱心網友回復:
我們可以在空間(用separate)分割“時間戳” ,創建兩列(“日期”,“時間”)并pivot_wider用于重塑
library(dplyr)
library(tidyr)
df1 %>%
separate(Timestamp, into = c("Date", "Time"), sep="\\s ") %>%
pivot_wider(names_from = Time, values_from = Energy_KWh)
# A tibble: 2 × 7
Date `00:00:00` `00:30:00` `01:00:00` `01:30:00` `02:00:00` `02:30:00`
<chr> <int> <int> <int> <int> <int> <int>
1 2021-01-01 10 11 9 8 9 13
2 2021-01-02 16 19 90 81 1 11
資料
df1 <- structure(list(Timestamp = c("2021-01-01 00:00:00", "2021-01-01 00:30:00",
"2021-01-01 01:00:00", "2021-01-01 01:30:00", "2021-01-01 02:00:00",
"2021-01-01 02:30:00", "2021-01-02 00:00:00", "2021-01-02 00:30:00",
"2021-01-02 01:00:00", "2021-01-02 01:30:00", "2021-01-02 02:00:00",
"2021-01-02 02:30:00"), Energy_KWh = c(10L, 11L, 9L, 8L, 9L,
13L, 16L, 19L, 90L, 81L, 1L, 11L)), class = "data.frame", row.names = c(NA,
-12L))
uj5u.com熱心網友回復:
這是另一種方法,盡管我更喜歡 akrun 的方法!
library(dplyr)
library(tidyr)
library(lubridate)
library(hms)
df %>%
mutate(Timestamp = ymd_hms(Timestamp)) %>%
mutate(date = as_date(Timestamp),
time = as_hms(Timestamp), .keep="unused"
) %>%
pivot_wider(names_from = time, values_from = Energy_KWh)
date `00:00:00` `00:30:00` `01:00:00` `01:30:00` `02:00:00` `02:30:00`
<date> <int> <int> <int> <int> <int> <int>
1 2021-01-01 10 11 9 8 9 13
2 2021-01-02 16 19 90 81 1 11
>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313697.html
