2015-11-16 3 views
0

У меня есть две матрицыКак заменить значения их значением?

A = matrix(c(2, 2, 2, 3, 3, 3),nrow=3,ncol=2) 
> A 
     [,1] [,2] 
[1,] 2 3 
[2,] 2 3 
[3,] 2 3 
B = matrix(c(2, 4, 3, 1, 5, 7),nrow=3, ncol=2) 
> B 
     [,1] [,2] 
[1,] 2 1 
[2,] 4 5 
[3,] 3 7 

взять среднее значение всех значений в B, которые соответствуют 3 в B: Создать матрицу только средства: Wanted матрицы:

C 

     [,1] [,2] 
[1,] 3 4.3 
[2,] 3 4.3 
[3,] 3 4.3 
+0

в ваших расчетах, когда вы используете матрицу 'A'? посмотрите на 'colMeans' – etienne

+0

Непонятно, как это связано с' A'. Вы можете получить тот же результат с помощью 'matrix (colMeans (B) [col (B)], ncol = 2)' – akrun

ответ

1

Когда группы не являются конкретными столбцами, это может помочь:

A <- matrix( c(2, 2, 2, 3, 3, 3),nrow=3,ncol=2) 
B <- matrix(c(2, 4, 3, 1, 5, 7),nrow=3, ncol=2) 
C <- matrix(nrow = dim(A)[1], ncol=dim(A)[2]) 

groups <- unique(c(A)) 
for(group in groups) { 
    C[which(A==group)] <- mean(B[which(A==group)]) 
} 

Если A содержит NA значения, а затем использовать

groups <- na.omit(unique(c(A))) 
1

насчет:

A <- matrix(c(2, 2, 2, 3, 3, 2, 3, 2), nrow=4, ncol=2) 
B <- matrix(c(2, 4, 3, 1, 5, 7, 4, 2), nrow=4, ncol=2) 

matrix(tapply(B, A, mean)[as.character(A)], nrow=nrow(A)) 

?

Смежные вопросы