web-dev-qa-db-fra.com

Quelle est la meilleure façon de transposer un data.frame dans R et de définir l'une des colonnes comme étant l'en-tête de la nouvelle table transposée?

Quelle est la meilleure façon de transposer un data.frame dans R et de définir l'une des colonnes comme étant l'en-tête de la nouvelle table transposée? J'ai codé un moyen de le faire ci-dessous. Comme je suis encore nouveau à R., je voudrais des suggestions pour améliorer mon code ainsi que des alternatives qui seraient plus comme R. Ma solution est également malheureusement un peu codée en dur (c'est-à-dire que les nouveaux en-têtes de colonne sont à un certain endroit).

# Assume a data.frame called fooData
# Assume the column is the first column before transposing

# Transpose table
fooData.T <- t(fooData)

# Set the column headings
colnames(fooData.T) <- test[1,]

# Get rid of the column heading row
fooData.T <- fooData.T[2:nrow(fooData.T), ]

#fooData.T now contains a transposed table with the first column as headings
18
themartinmcfly

Eh bien, vous pouvez le faire en 2 étapes en utilisant

# Transpose table YOU WANT
fooData.T <- t(fooData[,2:ncol(fooData)])

# Set the column headings from the first column in the original table
colnames(fooData.T) <- fooData[,1] 

Le résultat étant une matrice que vous connaissez probablement, qui est due à des problèmes de classe lors de la transposition. Je ne pense pas qu'il y aura une seule méthode pour le faire étant donné le manque de capacités de nommage dans l'étape de transposition.

22
nzcoops

J'avais un problème similaire à cela - j'avais une variable de facteurs dans un format long et je voulais que chaque facteur soit un nouvel en-tête de colonne; utiliser "unstack" de la bibliothèque de statistiques l'a fait en une seule étape. Si la colonne que vous souhaitez en tant qu'en-tête n'est pas un facteur, le "cast" de la bibliothèque de remodelage peut fonctionner.

2
ccl