2016-11-28 1 views
1

Le problème suivant dans R peut sembler facile à beaucoup d'entre vous, mais étant donné que je suis relativement nouveau dans ce domaine, il serait extrêmement utile que vous puissiez m'aider. Je veux essentiellement écrire un tableau multidimensionnel (3 dims) comme trame de données que je peux manipuler plus facilement.Tableau multidimensionnel dans le bloc de données

Je travaille avec un fichier NetCDF des données mensuelles de température de surface de la mer (SST) pour la période du 01/01/1891-01/12/2015. Extraire la variable SST du fichier (en utilisant le paquetage ncdf4) donne un tableau multidimensionnel (longitude = 360, latitude = 180, temps = 1992) (couches de cartes globalement globales, empilées sur le vecteur temps, y compris les valeurs NA - sur terre températures). Ce que je voudrais avoir à la place est une trame de données, dans laquelle: la première colonne est la longitude, deuxième latitude, troisième fois, quatrième valeurs SST. Mon problème est que les dimensions n'ont pas la même longueur et je ne vois pas comment je peux faire comprendre à R qu'il doit désempiler correctement les données.

Un exemple de ce que je veux ressemblerait à ceci:

Longitude Latitude Time SST 
0,5   89.5  01/01/1891 1.25 
0.5   89  01/01/1891 1.27 
0.5   88.5  01/01/1891 1.28 
…   …  … … 
1   89.5  01/01/1891 1.28 
1   89  01/01/1891 1.29 
1   88.5  01/01/1891 1.26 
…   …  … … 
0.5   89.5  01/02/1891 1.26 
0.5   89  01/02/1891 1.28 
…   …  … … 

Merci beaucoup pour votre temps et de patience!

+0

avec 'bibliothèque ESSAYEZ (reshape2); fondre (yourarray) ' – akrun

+1

** A fonctionné parfaitement !! ** Merci beaucoup. Honnêtement, je ne sais pas pourquoi je suis sûr qu'il ne serait pas capable de le gérer aussi facilement, même si je connaissais cette fonction. @akrun –

Répondre

-1

Nous pouvons utiliser melt

library(reshape2) 
melt(arrayObj)