【问题标题】:Add column with median absolute deviations (MADs) per row每行添加具有中值绝对偏差 (MAD) 的列
【发布时间】:2020-04-16 22:04:20
【问题描述】:

我有以下data.frame。我想在左侧添加一列,列出每行的中值绝对偏差 (MAD)(我使用的是 stats 包)。我已经阅读了使用 rowMeans 函数的帖子,但我不能在这里将它用于 MAD。希望有人能帮忙。

 library(stats)
 df <- as.data.frame(matrix(ncol=7, nrow=3, 
    c(3,6,NA,4,5,NA,7,6,2,7,10.4,8,9,NA,3.7,4,6,0.4,NA,7,2.9), byrow = TRUE))

【问题讨论】:

    标签: r dataframe row median


    【解决方案1】:

    我们可以使用applyMARGIN = 1 遍历行并应用mad

    df$MAD <- apply(df, 1, mad, na.rm = TRUE)
    df$MAD
    #[1] 1.48260 2.22390 2.29803
    

    matrixStats中,有rowMads

    library(matrixStats)
    rowMads(as.matrix(df), na.rm = TRUE)
    #[1] 1.48260 2.22390 2.29803
    

    【讨论】:

      【解决方案2】:

      我们可以在基数 R 中编写自己的函数来计算中值绝对偏差 (MAD)。

      my_mad <- function(x, constant = 1.4826) {
          median(abs(x - median(x, na.rm = TRUE)), na.rm = TRUE) * constant
      }
      
      apply(df, 1, my_mad) 
      #[1] 1.48 2.22 2.30
      

      【讨论】:

      • 很棒的选择!谢谢! :)
      猜你喜欢
      • 2014-05-13
      • 2021-07-15
      • 2015-07-03
      • 2017-08-09
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      相关资源
      最近更新 更多