我有一个包含14个数字变量和310行的数据框。 我想从列中的值中逐行推导列均值,然后从结果中创建一个新的数据框。 我尝试了以下操作,但这会导致错误的结果:
new_df <- df - colMeans(df, na.rm = TRUE)
答案 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)
我们可以rep
将colMeans
切成薄片
df - colMeans(df)[col(df)]
df <- data.frame(a = 1:5, b = 6:10)