R 使用循环函数计算具有特定列的行平均值
假设我有下面的数据框R 使用循环函数计算具有特定列的行平均值,r,apply,lapply,R,Apply,Lapply,假设我有下面的数据框 a <- data.frame(A = 1:10, B = 26:35, C = 101:110, D = 1001:1010) a[c(2,4,7),"A"] <- NA a A B C D 1 1 26 101 1001 2 NA 27 102 1002 3 3 28 103 1003 4 NA 29 104 1004 5 5 30 105 1005 6 6 31 106 1006 7 NA 32 107 1007
a <- data.frame(A = 1:10, B = 26:35, C = 101:110, D = 1001:1010)
a[c(2,4,7),"A"] <- NA
a
A B C D
1 1 26 101 1001
2 NA 27 102 1002
3 3 28 103 1003
4 NA 29 104 1004
5 5 30 105 1005
6 6 31 106 1006
7 NA 32 107 1007
8 8 33 108 1008
9 9 34 109 1009
10 10 35 110 1010
a首先,data.frame不是完全存储数字数据的正确方法:
m = as.matrix(a)
从这里,我们可以找到NA
值在矩阵中的位置
idx = which(is.na(m), arr.ind=TRUE)
row col
[1,] 2 1
[2,] 4 1
[3,] 7 1
并填写它们
m[idx] <- rowMeans(m[idx[,1], ], na.rm=TRUE)
A B C D
[1,] 1 26 101 1001
[2,] 377 27 102 1002
[3,] 3 28 103 1003
[4,] 379 29 104 1004
[5,] 5 30 105 1005
[6,] 6 31 106 1006
[7,] 382 32 107 1007
[8,] 8 33 108 1008
[9,] 9 34 109 1009
[10,] 10 35 110 1010
我还在dupe链接中添加了这一点。
library(zoo)
t(na.aggregate(t(m)))