从列值中减去列均值

时间:2020-05-13 10:05:16

标签: r

我有一个包含14个数字变量和310行的数据框。 我想从列中的值中逐行推导列均值,然后从结果中创建一个新的数据框。 我尝试了以下操作,但这会导致错误的结果:

new_df <- df - colMeans(df, na.rm = TRUE)

2 个答案:

答案 0 :(得分:1)

使用sweep

sweep(df, 2,colMeans(df, na.rm = TRUE))

#   a  b
#1 -2 -2
#2 -1 -1
#3  0  0
#4  1  1
#5  2  2

或两次移调:

t(t(df) - colMeans(df, na.rm = TRUE))

数据

df <- data.frame(a = 1:5, b = 6:10)

答案 1 :(得分:0)

我们可以repcolMeans切成薄片

df - colMeans(df)[col(df)]

数据

df <- data.frame(a = 1:5, b = 6:10)