2014-07-19 9 views
1

Ceci est probablement une question fondamentale, mais je n'ai pas été capable de Google quoi que ce soit d'utile après avoir essayé pendant des jours.Comment classer les vecteurs x, y, z en matrice (R)

J'ai une image R avec x, y, z tuples, où z est une réponse à x et y et peut être modélisée comme une surface.

> head(temp) 
     x   y  z 
1 36.55411 965.7779 1644.779 
2 42.36912 978.9721 1643.957 
3 58.34699 1183.7426 1846.123 
4 53.55439 1232.2696 1990.707 
5 50.76167 1115.2049 1281.988 
6 51.37299 1059.9088 1597.028 

Je voudrais créer une matrice de valeurs moyennes z, avec des lignes représentant des valeurs et des colonnes représentant regroupées par casiers x valeurs y ensilées, comme

  0<x<40 40<x<60 60<x<80 x>80 
    0<y<800 1000.0 1100.00 1100.00 1000.0 
800<y<1200 1000.0 1200.00 1200.00 1000.0 
1200<y<1400 1000.0 1200.00 1200.00 1000.0 
    y<1400 1000.0 1100.00 1100.00 1000.0 

grâce

Répondre

1

Vous pouvez utiliser tapply et cut ici

with(temp, tapply(z, 
    list(
     y=cut(y, breaks=c(0,800,1200,1400,Inf), include.lowest=T), 
     x=cut(x, breaks=c(0,40,60,80,Inf), include.lowest=T) 
    ), 
    mean) 
) 

La cut divise la fonction x et y en ce que les groupes que vous aimez. Alors que tapply calcule le mean ici pour chaque regroupement de ces valeurs dans la liste.

#     x 
# y      (0,40] (40,60] (60,80] (80,Inf] 
# (0,800]     NA  NA  NA  NA 
# (800,1.2e+03]  1644.779 1592.274  NA  NA 
# (1.2e+03,1.4e+03]  NA 1990.707  NA  NA 
# (1.4e+03,Inf]   NA  NA  NA  NA 
Questions connexes