我们可以使用以下数据框作为示例:
Cases <- c("Siddhartha", "Siddhartha", "Siddhartha", "Paul", "Paul", "Paul", "Hannah")
Procedures <- c("1", "1", "2", "3", "3", "4", "1")
(df <- data.frame(Cases, Procedures))
Cases Procedures
1 Siddhartha 1
2 Siddhartha 1
3 Siddhartha 2
4 Paul 3
5 Paul 3
6 Paul 4
7 Hannah 1
现在我执行以下操作:
Sum_Group <- function(df, variable){
variable <- enquo(variable)
df %>%
dplyr::group_by(!! variable) %>%
dplyr::summarize(Number = n()) %>%
dplyr::mutate(Prozent = round((Number/sum(Number)*100)))
}
Sum_Group(df, Procedures)
这给了我:
# A tibble: 4 x 3
Procedures Number Prozent
<fct> <int> <dbl>
1 1 3 43
2 2 1 14
3 3 2 29
4 4 1 14
这不完全是我想要的。我想要的是以下数据框:
Procedures Number Prozent
<fct> <int> <dbl>
1 1 2 40
2 2 1 20
3 3 1 20
4 4 1 20
注意步骤1和3的不同。
因此,我想要的是一个函数,该函数将同一过程的多次出现汇总为一个情况,而不是像在第一个示例中那样多次出现。同样,该功能还应该在不同的数据帧上工作,在这些数据帧上存在不同(未知)的情况和过程。
我不确定,是否容易做到,我只是忽略了某些内容。
问候
您要计算每个Procedures
的不同案例数。
library(dplyr)
library(rlang)
Sum_Group <- function(df, variable) {
df %>%
group_by({{variable}}) %>%
summarise(Number = n_distinct(Cases)) %>%
mutate(Prozent = round((Number/sum(Number)*100)))
}