【问题标题】:Generating Conditional Summary Statistics in R?在 R 中生成条件汇总统计?
【发布时间】:2020-10-03 02:09:30
【问题描述】:

对于这个相当简单的问题,我深表歉意,尽管我在使用 R 进行计量经济学/回归分析方面有一些经验,但我还是设法跳过了学习如何在 R 中创建基本汇总统计数据的学习。如何生成 1) 计算的输出数量观察,那个特定的

对于这个数据框,我如何计算特定列的每种类型的不同观察次数(即:“Side”列中有多少 Ls 和 Rs)?如果“Side”列等于“L”(例如,当“Side”等于“L”时,我如何分解“State”列的计数和百分比?绿色、红色还是蓝色?

Side   State    Color    Type            
L       O       Green     B
R       C       Red       Q
R       O       Red       C
R       O       Blue      L
L       C       Green     B
L       C       Yellow    C

这是我正在寻找的输出类型:

Side  Count    %
L     13      38%
R     21      68%

对于边=L

Color  Count    %
Green  4        31
Red    7        54
Blue   1        8
Yellow 1        8

对于边=R

Color  Count    %
Green  11       52
Red    4        19
Blue   2        10
Yellow 4        19

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    您可以使用count 统计频率,使用prop.table 统计比率。

    对于每个Side

    library(dplyr)
    
    df %>%
      count(Side, name = 'Count') %>%
      mutate(Perc = prop.table(Count) * 100)
    

    对于每个Side 中的color

    df %>%
      count(Side, Color, name = 'Count') %>%
      group_by(Side) %>%
      mutate(Perc = prop.table(Count) * 100)
    

    【讨论】:

    • Ronak,一如既往,你很棒。如果我想进一步分析怎么办?即:如果“Side”=L 和“State”=0,我如何显示颜色的汇总统计信息。换句话说,如果我添加另一个条件,如何显示完全相同的内容。
    • @rogues77 在这种情况下,您可以添加group_by Color 而不是group_by Side
    【解决方案2】:

    我们可以使用summarisegroup_by

    library(dplyr)
    df %>%
        group_by(Side) %>% 
        summarise(Count  = n(), .groups = 'drop') %>% 
        mutate(Perc = 100 * Count/sum(Count))
    # A tibble: 2 x 3
    #  Side  Count  Perc
    #  <chr> <int> <dbl>
    #1 L         3    50
    #2 R         3    50
    

    对于第二种情况

    df %>% 
       group_by(Side, Color) %>%
       summarise(Count  = n(), .groups = 'drop_last') %>% 
       mutate(Perc = 100 * Count/sum(Count))
    # A tibble: 4 x 4
    # Groups:   Side [2]
    #  Side  Color  Count  Perc
    #  <chr> <chr>  <int> <dbl>
    #1 L     Green      2  66.7
    #2 L     Yellow     1  33.3
    #3 R     Blue       1  33.3
    #4 R     Red        2  66.7
    

    数据

    df <- structure(list(Side = c("L", "R", "R", "R", "L", "L"), State = c("O", 
    "C", "O", "O", "C", "C"), Color = c("Green", "Red", "Red", "Blue", 
    "Green", "Yellow"), Type = c("B", "Q", "C", "L", "B", "C")), 
    class = "data.frame", row.names = c(NA, 
    -6L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多