在我的数据中,名为“Values”的列之一有 8 个不同的值。 Value1、Value2 等。另一列“状态”包含 5 种不同的状态。 Status1、Status2 等。还有另一列“截止日期”。
因此,每一行(数百行)都有 8 个值中的 1 个、5 个法规中的 1 个和截止日期。如果是Status5,则认为完成。但是,我想通过 RStudio 转换此信息,以便我可以按行查看 8 个不同的值,然后显示显示值的 5 列。看起来像是一个简单的枢轴,对吧?问题是:我需要在数据透视表中的 5 个标有“逾期”的法规旁边增加一列。正如您所猜测的,我希望此列按值计算有多少个值到期,并将其整齐地放置在我的数据透视表中最后一个“状态”列旁边。我还需要有一个“总计”行和一个“总计”列。
我尝试过 tabyl() 和 hub_wider() 但我陷入困境。鼓励提出建议 - 谢谢!我尝试过变异(使用“mutate()”创建一个过期的列,但我在将下一部分连接到枢轴时遇到问题。到目前为止,我已经:
df_Pivot <- df %>% tabyl(Values, Status) %>% adorn_totals("col") %>% adorn_totals("row")
因此,除了“逾期”列和信息之外的所有内容都包含在我上面提供枢轴的代码中。每次我尝试添加逾期的部分时,我都会收到错误。请帮忙!
示例数据:值状态到期日期(列) 值 1;状态 2;03/04/2024 值2;状态3;05/04/2024 值2;状态5;02/01/2024 值 6;状态 3;2024 年 3 月 25 日
set.seed(42)
library(tidyverse)
data <- data.frame(
Values = sample(paste0("Value", 1:8), 1000, replace = TRUE),
Status = sample(paste0("Status", 1:5), 1000, replace = TRUE),
due_date = Sys.Date() + sample(-365:365, 1000, replace = TRUE)
)
data_body <- data %>%
count(Values, Status) %>%
pivot_wider(names_from = Status, values_from = n, values_fill = 0)
data_row_counts <- data_body %>%
rowwise() %>%
mutate(Total = sum(c_across(-Values))) %>%
select(Values, Total)
data_col_counts <- data_body %>%
left_join(data_row_counts, by = "Values") %>%
summarize(Values = "Total", across(-Values, sum))
data_col_overdue <- data %>%
mutate(is_over_due = Status != "Status5" & due_date < Sys.Date()) %>%
filter(is_over_due) %>%
count(Values, name = "Overdue")
data_cols <- data_body %>%
left_join(data_col_overdue, by = "Values") %>%
left_join(data_row_counts, by = "Values")
data_cols %>%
bind_rows(
data_cols %>%
summarize(Values = "Total", across(-Values, sum))
)
#> # A tibble: 9 × 8
#> Values Status1 Status2 Status3 Status4 Status5 Overdue Total
#> <chr> <int> <int> <int> <int> <int> <int> <int>
#> 1 Value1 30 27 28 24 25 55 134
#> 2 Value2 31 31 29 34 27 61 152
#> 3 Value3 23 27 31 28 16 57 125
#> 4 Value4 24 23 28 29 18 46 122
#> 5 Value5 29 25 25 19 25 47 123
#> 6 Value6 23 22 30 23 27 48 125
#> 7 Value7 15 26 24 27 25 42 117
#> 8 Value8 23 18 21 15 25 33 102
#> 9 Total 198 199 216 199 188 389 1000
创建于 2024-03-26,使用 reprex v2.1.0