我有如下所示的数据矩阵,我想从中创建另一个矩阵,这样新矩阵的列就是原始矩阵的某些列的平均值。
我的矩阵:
> A
A1 A2 B1 B2 E3 E5 E6 E7 E8 E9
[1,] 1 11 21 31 41 51 61 71 81 91
[2,] 2 12 22 32 42 52 62 72 82 92
[3,] 3 13 23 33 43 53 63 73 83 93
[4,] 4 14 24 34 44 54 64 74 84 94
[5,] 5 15 25 35 45 55 65 75 85 95
[6,] 6 16 26 36 46 56 66 76 86 96
[7,] 7 17 27 37 47 57 67 77 87 97
[8,] 8 18 28 38 48 58 68 78 88 98
[9,] 9 19 29 39 49 59 69 79 89 99
[10,] 10 20 30 40 50 60 70 80 90 100
我的新矩阵 B ,应该包含3列,第一列是 A1的意思 第2列 B1,B2 的意思,第3列是 E3,E5, 的
如何使用应用功能
实现此功能B<-apply(A,2, mean)
答案 0 :(得分:1)
使用apply你可以做
a <- apply(d, 1, function(x) {
by(as.vector(x), substr(names(x) , 1, 1), mean)
})
t(a)
内部函数按变量名的前几个字母拆分数据并计算平均值。
A B E
[1,] 6 26 66
[2,] 7 27 67
[3,] 8 28 68
[4,] 9 29 69
[5,] 10 30 70
[6,] 11 31 71
[7,] 12 32 72
[8,] 13 33 73
[9,] 14 34 74
[10,] 15 35 75
答案 1 :(得分:0)
这是你的意思吗?
sapply(unique(substr(colnames(A),1,1)), function(x) apply(A[,grepl(x,colnames(A))],1,mean))
A B E
[1,] 6 26 66
[2,] 7 27 67
[3,] 8 28 68
[4,] 9 29 69
[5,] 10 30 70
[6,] 11 31 71
[7,] 12 32 72
[8,] 13 33 73
[9,] 14 34 74
[10,] 15 35 75