R 分组并使用删除的重复项进行汇总

R 分组并使用删除的重复项进行汇总,r,R,我们可以使用以下数据帧作为示例: 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

我们可以使用以下数据帧作为示例:

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

Cases您要计算每个
过程的不同案例数
。您可以使用
n_distinct
来计算。您还可以使用curly-curly操作符(
{{}
),它同时完成
enquo
的工作在一起

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)))
}

Sum_Group(df, Procedures)

# A tibble: 4 x 3
#  Procedures Number Prozent
#  <chr>       <int>   <dbl>
#1 1               2      40
#2 2               1      20
#3 3               1      20
#4 4               1      20
库(dplyr)
图书馆(rlang)
总组%
分组依据({{variable}})%>%
总结(数量=n_不同(案例))%>%
变异(比例=四舍五入((数字/总和(数字)*100)))
}
Sum_组(df,程序)
#一个tibble:4x3
#程序数比例
#            
#1 1               2      40
#2 2               1      20
#3 3               1      20
#4 4               1      20

如果我还想按位置排序,需要添加什么。我试着用pivot_加宽,但没有显示想要的结果。我试过:``df%>%count(位置、过程、n_distinct(Case))%%>%pivot\u加宽(name\u from=Location、values\u from=n、values\u fill=list(n=0))``但里面没有不同的大小写。在你的例子中没有
位置
,所以我不明白你在问什么。最好问一个包含所有细节的新问题。我们在这里总结的情况是,即使数据帧中存在
Location
,输出中仍然不存在。是否要将
位置
添加到
分组人
# 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
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)))
}

Sum_Group(df, Procedures)

# A tibble: 4 x 3
#  Procedures Number Prozent
#  <chr>       <int>   <dbl>
#1 1               2      40
#2 2               1      20
#3 3               1      20
#4 4               1      20