Я пытаюсь воссоздать сводную таблицу в RI, обычно создаваемую в Excel.
Необработанные данные выглядят так, за исключением тысяч строк (не идентифицированных):
ORDER_ID ACT_DATE ACT_TIME ACT_TYPE NURSE_UNIT FACILITY_AREA USER_NAME
111 2/28/2020 12:04 MODIFY BG RCU BGMC User 1
112 2/27/2020 17:50 MODIFY BG CCU E BGMC User 2
113 2/27/2020 17:50 MODIFY BG CCU E BGMC User 2
114 2/27/2020 14:31 CANCEL/DC BG CCU E BGMC User 2
115 2/28/2020 6:03 CANCEL/DC BG CCU E BGMC User 2
116 2/28/2020 6:03 CANCEL/DC BG CCU E BGMC User 2
117 2/28/2020 10:29 CANCEL/DC BG CCU E BGMC User 2
118 2/28/2020 9:20 MODIFY BG CCU E BGMC User 3
119 2/24/2020 12:43 VERIFY BG 5 Sou BGMC User 4
110 2/26/2020 9:08 CANCEL/DC BG 6 Sou BGMC User 5
111 2/27/2020 17:50 MODIFY BG CCU E BGMC User 2
112 2/28/2020 5:57 CANCEL/DC BG CCU E BGMC User 2
Исходный код:
library(dplyr)
bgmcOrderAction <- read.csv('C:\\Users\\xxx\\Desktop\\bgmc_order_action_report_20200223.csv')
# filter the data
byUnit <- bgmcOrderAction %>%
# remove this strange extra column
select(-c(X)) %>%
#remove extra white space
mutate(USER_NAME = trimws(USER_NAME)) %>%
mutate(ACT_TYPE = trimws(ACT_TYPE)) %>%
mutate(ACT_TIME = trimws(ACT_TIME)) %>%
mutate(NURSE_UNIT = trimws(NURSE_UNIT)) %>%
mutate(FACILITY_AREA = trimws(FACILITY_AREA)) %>%
# convert the time from HH:MM to just HH
mutate(ACT_HR = substr(ACT_TIME, 1, 2)) %>%
# we're interested in the quantity of order actions in each nurse unit per hour
group_by(NURSE_UNIT, ACT_HR) %>%
#mutate(count = n()) %>%
summarise(ACT_COUNT = n())
byUnit
NURSE_UNIT: описание медсестры
ACT_HR: час, когда произошло действие
ACT_COUNT: суммарное количество каждого уникального вхождения
> byUnit
# A tibble: 688 x 3
# Groups: NURSE_UNIT [36]
NURSE_UNIT ACT_HR ACT_COUNT
<chr> <chr> <int>
1 BG 2 Sou 01 15
2 BG 2 Sou 09 2
3 BG 2 Sou 12 16
4 BG 2 Sou 15 15
5 BG 2 Sou 17 29
6 BG 2 Sou 18 44
7 BG 2 Sou 19 14
8 BG 2 Sou 20 16
9 BG 2 Sou 21 43
10 BG 2 Sou 22 30
# ... with 678 more rows
Мой желаемый результат будет выглядеть примерно так (в основном макет типа тепловой карты), где метки строк - это каждая единица медсестры только один раз, а метки столбцов - каждый час дня (военное время) только один раз. Число в таблице представляет ACT_COUNT для этой конкретной медсестры в конкретный час. Цель состоит в том, чтобы узнать, сколько действий происходит в каждый час дня в каждом подразделении медсестры.
Пример вывода:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Unit1 0 1 5 0 7 1 0 0 0 0 0 0 0 2 0 1 8 9 0 0 3 4 5 1
Unit2 0 0 1 0 2 1 0 0 0 0 0 6 0 0 4 0 8 0 0 0 3 0 2 0
Unit3 0 1 2 0 4 1 0 0 0 0 0 0 0 2 0 1 0 9 3 0 3 4 1 1
Unit4 0 1 0 0 1 1 0 0 0 0 0 0 0 0 4 1 8 9 0 0 0 4 1 1
BG 2 Sou 0 15 0 0 0 0 0 0 0 2 0 0 16 0 0 15 0 29 44 0 0 0 0 0