【问题标题】:How to Build a Table that Summarizes Multiple Values at Once in R如何在 R 中构建一个同时汇总多个值的表
【发布时间】:2021-10-15 06:12:57
【问题描述】:

我有一个数据框(标题为 df1),其中包含多个列,其中包含是、否或 NA 答案。

     A    B   C    D
1  Yes   No  No  Yes
2  Yes   No  No   No
3 <NA>  Yes Yes <NA>
4   No <NA>  No  Yes

我的目标是创建一个表格,统计每个答案的频率,并输出一个原始列名的表格,如下所示:

  Answer A B C D
1    Yes 2 1 1 2
2     No 1 2 3 1
3   <NA> 1 1 0 1

到目前为止,我的方法是构建一个函数然后循环遍历该函数,但输出不会生成包含所有类别(A 到 D)的表。

my_function <- function(table_name,col_name) {
  table_name %>% 
    group_by_(Answer = col_name) %>%
    summarise(!!paste0(col_name):= n())}

my_categories <- c("A","B","C","D")

for(i in 1:length(my_categories)){
  df2 <- myfunction(df1,CSAT_Cols[i])
}

如果有更简单的方法,我也愿意接受不同的方法,但 TL:DR 尝试按多个类别循环分组,通过 n() 进行汇总,然后创建包含所有数据的单个表。

【问题讨论】:

    标签: r dataframe function loops dplyr


    【解决方案1】:

    我们可以使用pivot_longer 重塑为“长”格式,然后使用pivot_wider 恢复为“宽”格式,同时在不同的列上将values_fn 指定为length

    library(dplyr)
    library(tidyr)
    df1 %>% 
        pivot_longer(cols = everything(), values_to = 'Answer') %>% 
        pivot_wider(names_from = name, values_from = name, 
           values_fn = length, values_fill = 0)
    

    -输出

    # A tibble: 3 x 5
      Answer     A     B     C     D
      <chr>  <int> <int> <int> <int>
    1 Yes        2     1     1     2
    2 No         1     2     3     1
    3 <NA>       1     1     0     1
    

    数据

    df1 <- structure(list(A = c("Yes", "Yes", NA, "No"), B = c("No", "No", 
    "Yes", NA), C = c("No", "No", "Yes", "No"), D = c("Yes", "No", 
    NA, "Yes")), class = "data.frame", row.names = c("1", "2", "3", 
    "4"))
    

    【讨论】:

      【解决方案2】:

      也许使用table 的基本 R 选项可以帮助您

      > table(unlist(df), names(df)[col(df)], useNA = "ifany")
      
             A B C D
        No   1 2 3 1
        Yes  2 1 1 2
        <NA> 1 1 0 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-15
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        相关资源
        最近更新 更多