添加每行具有中值绝对偏差 (MAD) 的列
Add column with median absolute deviations (MADs) per row
我有以下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))
我们可以遍历 apply
、MARGIN = 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
我们可以在 base 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
我有以下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))
我们可以遍历 apply
、MARGIN = 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
我们可以在 base 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