我在下面有一個資料集
| 日期 | 地位 | 價值 |
|---|---|---|
| 05/12/2021 23:59 | 失敗的 | 500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 失敗的 | 1500 |
| 05/12/2021 23:59 | 失敗的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 失敗的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 失敗的 | 500 |
| 05/12/2021 23:59 | 失敗的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 失敗的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 失敗的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 失敗的 | 500 |
| 05/12/2021 23:59 | 失敗的 | 500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 500 |
| 05/12/2021 23:59 | 成功的 | 1500 |
| 05/12/2021 23:59 | 成功的 | 500 |
我希望能夠拆分日期時間列以擁有我的時間
然后將每小時間隔的時間分組
然后總結得到下面的列
我想獲得一小時內處理的交易數量
那么一小時內的價值
然后有一列說明有多少成功,然后另一列說明在一小時內有多少失敗
請參閱下面所需匯總表的輸出
| 間隔 | 價值 | 數數 | 成功的 | 失敗的 |
|---|---|---|---|---|
| 上午 00:00 - 上午 00:59 | 32,000 | 54 | 40 | 15 |
| 上午 00:59 - 上午 01:00 | 42,000 | 55 | 41 | 14 |
| 01:00 am - 02:59 am | 21,400 | 56 | 42 | 14 |
| 03:00 am - 03:59 am | 4,00 | 57 | 43 | 14 |
| 04:00 am - 04:59 am | 543,000 | 58 | 2 | 56 |
| 05:00 am - 05:59 am | 411,000 | 59 | 6 | 53 |
uj5u.com熱心網友回復:
這個怎么樣:
library(tidyverse)
library(lubridate)
library(glue)
df <- tribble(~Date, ~Status, ~Value,
"05/12/2021 23:59", "Failed", 500,
"05/12/2021 23:59", "Successful", 1500,
"05/12/2021 23:59", "Successful", 500,
"05/12/2021 23:59", "Successful", 1500,
"05/12/2021 23:59", "Successful", 1500,
"05/12/2021 23:59", "Failed", 1500)
df2 <- df %>%
mutate(Datetime = dmy_hms(Date), # convert to datetime format
Date = as.Date(Datetime), # extract date, if you need it later
Hour = hour(Datetime)) # extract hour
hourly_value <- df2 %>%
group_by(Hour) %>%
summarize(Value = sum(Value),
.groups = "drop")
hourly_count <- df2 %>%
count(Hour, Status) %>%
pivot_wider(names_from = "Status", values_from = "n")
interval_helper <- tibble(Hour = 0:23,
display_hour = str_pad(Hour %% 12, 2, pad = '0'),
ampm = if_else(Hour < 12, "am", "pm"),
Interval = glue("{display_hour}:00 {ampm} - {display_hour}:59 {ampm}"))
full_join(hourly_value, hourly_count, by = "Hour") %>%
replace_na(list(Successful = 0L, Failed = 0L, Value = 0)) %>%
left_join(interval_helper, by = "Hour") %>%
mutate(Count = Successful Failed) %>%
select(Interval, Value, Count, Successful, Failed)
我不太確定您的原始Date列是如何格式化的。這里我假設它是一個字串。因為Interval列的確切格式對您很重要,所以用您想要顯示的字串制作和加入單獨的 tibble 似乎更容易。
NA用零替換缺失值很重要,否則Count = Successful Failed當只有其中一個值時 會偷偷地失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382551.html
上一篇:Pandasto_datetime不遵循格式并產生不正確的結果
下一篇:在熊貓中拆分24小時資料
