【问题标题】:R: Calculating matrix summary statistics by factor dplyrR:通过因子 dplyr 计算矩阵汇总统计
【发布时间】:2018-05-05 17:36:38
【问题描述】:

计算带有因子的矩阵的汇总统计数据的最佳方法是什么(使用 R)?

样本数据:

df <- read.table(text="
  Gender  Obs1   Obs2    Obs3 
1   F     0.0   -1.25   -1.23 
2   M    -0.5    0.83   -0.25 
3   UNK   1.0    1.22    0.24 
4   F     1.0    0.25    0.76 
5   F     0.5    1.02    0.0  
6   M     2.0   -0.05    0.66 
7   M     1.0    5.80    NA   
8   M     1.0    NA      1.0
9   UNK   0.0    NA      2.2", header=T)

df <- as.data.frame(df)

预期输出:

Gender | Obs1_count | Obs2_count | Obs3_count | Obs1_mean | Obs2_mean | Obs3_mean
---------------------------------------------------------------------------------

  F           3          3            3          0.5        0.00667      -0.157
  M           4          3            3          0.875      2.0433        0.47
  UNK         2          1            2          0.5        1.22          1.22

我尝试过的:

library(dplyr)
summaryStats <- df %>% group_by(Gender) %>% na.omit() %>%
                      summarise_all(.funs = funs(
                                            count = length(.),
                                            mean = mean(.)))

【问题讨论】:

    标签: r count dplyr summary


    【解决方案1】:

    我们可以在逻辑向量上使用 sum 来获取非 NA 元素的“计数”,mean 也有一个参数 na.rm = TRUE 来删除那些 NA 元素。所以,我们不需要na.omit()。虽然它确实删除了NA 元素,但只要该行上只有一个NA,它也会删除完整的行。实际上,某些列的“计数”会减少,“平均值”也会根据删除具有非 NA 值的行而发生变化

    df %>% 
        group_by(Gender) %>% 
        summarise_all(.funs = funs(count = sum(!is.na(.)), 
                                   mean = mean(., na.rm = TRUE)))
    # A tibble: 3 x 7
    #  Gender Obs1_count Obs2_count Obs3_count Obs1_mean Obs2_mean Obs3_mean
    #  <fct>       <int>      <int>      <int>     <dbl>     <dbl>     <dbl>
    #1 F               3          3          3     0.5     0.00667    -0.157
    #2 M               4          3          3     0.875   2.19        0.47 
    #3 UNK             2          1          2     0.5     1.22        1.22 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 2014-11-06
      • 2023-01-05
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多