【发布时间】:2020-07-27 22:22:15
【问题描述】:
我已经从 MySQL 服务器获取了一些信息到 R 中,在我的 R 数据框中如下所示:
barcode_no Inspection_date current_profile score Tag_log prod_log
12345678 2020-01-15 14:34:13 Large 10 C1 WIP
12345678 2020-01-15 18:33:11 Medium 20 C2 Hold
12345678 2020-01-15 13:23:24 Medium 50 C3 Hold
12345678 2020-01-15 12:12:23 Medium 70 Shipped
12345678 2020-01-15 11:12:45 Medium 120 C1 Shipped
12345678 2020-01-15 12:22:32 Small 150 C2 Shipped
12345678 2020-01-15 15:23:23 Small 10 C3 WIP
12345678 2020-01-15 16:34:08 Small 20 C2 Hold
12345678 2020-01-15 17:07:13 Small 130 C1 Hold
12345678 2020-01-15 17:09:05 Small 40 Hold
要求是将上述数据框的详细信息适合日期和月份的综合报告结构。
comprehensive_df(日期):如果该日期的部分或全部记录不可用,则将根据系统日期考虑最晚日期,然后用0填写综合报告df。
Current_profile # of records % of records C1 C2 C3 [Null] # of records % of records C1 C2 C3 [Null] # of records % of records C1 C2 C3 [Null] Total % Total
**Large 01 16.67 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10.00**
Shipped 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0
Hold 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0
WIP 01 1.0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 100.00
**Small 03 50.00 0 1 1 1 0 0 0 0 0 0 02 66.67 1 1 0 0 5 50.00**
Shipped 0 0 0 0 0 0 0 0 0 0 0 0 01 50.00 0 1 0 0 1 20.00
Hold 02 66.67 0 1 0 1 0 0 0 0 0 0 1 100.00 1 0 0 0 3 60.00
WIP 01 33.33 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 20.00
**Medium 02 33.33 0 1 1 0 1 100.00 0 0 0 1 1 33.33 1 0 0 0 4 40.00**
Shipped 0 0 0 0 0 0 1 100.00 0 0 0 1 1 100.00 0 0 0 0 2 50.00
Hold 2 100.00 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 50.00
WIP 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Total 06 0.10 1 0 0 0 1 0 0 0 0 0 3 0 0 0 0 0 1 0.10
我将综合数据框划分为多个部分,其中第 2 到第 7 列代表得分从 0 到 50 到 100 和第 14 列的人数到 20 表示得分 > 100 的人数。
我正在尝试的代码:
df1<- df %>%
mutate(Month = format(ymd(Inspection_date),'%b-%Y')) %>%
group_by(Month) %>%
dplyr::summarise(`current_profile` = n())
df2<- df %>%
mutate(Month = format(ymd(Inspection_date),'%b-%Y')) %>%
group_by(Month) %>%
dplyr::summarise(`Tag_log` = n())
df3<- df %>%
mutate(Month = format(ymd(Inspection_date),'%b-%Y')) %>%
group_by(Month) %>%
dplyr::summarise(`prod_log` = n())
对于每个变量,依此类推。然后尝试full_join Date 的所有数据框以获取日期综合格式和月份综合格式。
comprehensive_df <- df1 %>% full_join(df1, by = 'Month') %>%
full_join(df2, by = 'Month') %>%
full_join(df3, by = 'Month')
【问题讨论】:
-
到目前为止你有什么代码? gt 可能会有所帮助。
-
@alistaire:我是使用 R 的初学者。我尝试过
dplyr和tidyverse库来实现全面的数据框,但到目前为止只能通过Inspection_Date聚合计数和Current_profile仅限。不知道如何与Current_profile和prod_log聚合在一起, -
按多个变量分组:
my_df %>% group_by(Current_profile, prod_log, Tag_log) %>% summarise(n_records = n())。这不会为您提供您要求的演示格式,但它将为您提供的格式对于进一步分析更有用,因为它是 tidy。 -
@alistaire:是的,但需要以这种格式创建,以便在呈现月度报告的数据时更加直观。
-
@alistaire:老实说,这是一些我想自动化的手动任务,因为它需要大量时间来使用
write.csv()导出数据并将其以给定格式排列在 excel 中。