【问题标题】:Calculate medians of multiple columns in a data frame计算数据框中多列的中位数
【发布时间】:2021-08-11 21:42:40
【问题描述】:

我想在下面计算我的df 数据库的中位数。 在这种情况下,我想获取 A1 到 A10 列的中值结果,并分别返回这些列的结果。

谢谢!

#database
df <- structure(
 list(D1 = c("a","a","b","b","b"), 
      D2 = c("c","d","c","d","c"), D3 = c("X","X","Y","Z","Z"), A1=c(1,2,3,4,5),A2=c(4,2,3,4,4), A3=c(1,2,3,4,6),
      A4=c(1,9,4,4,6),A5=c(1,4,3,9,6),A6=c(1,2,4,4,8),A7=c(1,1,3,4,7),A8=c(1,6,4,4,2),A9=c(1,2,3,4,6),A10=c(1,5,3,2,7)),
      class = "data.frame", row.names = c(NA, -5L))

【问题讨论】:

    标签: r median


    【解决方案1】:

    如果你想保持简单:

    apply(df[, 4:13], 2, median)
     A1  A2  A3  A4  A5  A6  A7  A8  A9 A10 
      3   4   3   4   4   4   3   4   3   3 
    

    【讨论】:

      【解决方案2】:

      我们可以遍历numeric 列并获得median

      library(dplyr)
      df %>% 
         summarise(across(where(is.numeric), median))
        A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
      1  3  4  3  4  4  4  3  4  3   3
      

      或者从matrixStats使用colMedians

      library(matrixStats)
      colMedians(as.matrix(df[startsWith(names(df), "A")]))
       [1] 3 4 3 4 4 4 3 4 3 3
      

      或在base R

      sapply(df[startsWith(names(df), "A")], median)
       A1  A2  A3  A4  A5  A6  A7  A8  A9 A10 
        3   4   3   4   4   4   3   4   3   3 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 2021-03-26
        • 2017-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多