Les valeurs de plusieurs dataframe colonnes dans un vecteur
J'ai un dataframe df
qui a de nombreux cols et dire 100 lignes.
Comment dois-je prendre tous les niveaux de valeurs dans les colonnes avec les noms "alpha", "gamma" et "zeta" et de stocker les 300 d'entre eux dans un seul vecteur?
unlist(df[c("the","cols","you","want")], use.names = FALSE)
?- Yep on y est presque ... maintenant que me renvoie un vecteur unique avec les niveaux des indices sous forme de valeurs, ce qui s'est passé pour les "noms" des niveaux? C'est en tournant les facteurs de retour dans les personnages?
- Vous devez préciser si vous souhaitez que les valeurs que les niveaux (pas de quoi vous remettre en question les états) ou tout simplement un vecteur de niveaux (qui est ce que vous demandez).
- Pourquoi ne pas faire un petit 3x5
data.frame
qui démontre votre entrée et unvector
qui montre votre sortie désirée. Lorsque j'utiliseunlist
comme démontré ci-dessus, lefactors
est resté commefactors
à moins que l'une des colonnes était uncharacter
colonne.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé que la conversion à une matrice d'abord se rendre à des niveaux un peu plus facile.
Bien sûr, vous pourriez avoir tout fait
stringsAsFactors=FALSE
quand vous lisez les données dans un premier temps.Vous avez accepté la réponse, mais voici ce que je pense qui se passe: Vous avez une combinaison de
factor
etcharacter
colonnes. Dans ce cas,unlist
ne fonctionne pas directement, mais si ils étaient tousfactor
ou si elles étaient toutescharacter
, il n'y aurait pas de problème:Quelques exemples de données:
Cas 1, toutes les colonnes sont des facteurs
Le cas 2, la colonne E = caractères, d'autres colonnes facteurs
Pour un problème à l'échelle décrite ici, les cas-tests montrent que la conversion à caractère premier et à l'aide de
unlist
est en fait l'approche plus rapide si vous n'avez pas de soins pour le maintien de facteurs. Notez que le résultat defun1()
n'est pas correct si certaines colonnes sont les facteurs et certains sont des personnages. Voici une référence sur un 100 lignedata.frame
:Bien sûr, ici nous parlons de microsecondes, mais les résultats de l'échelle.
Pour référence, voici ce qui a été utilisé pour l'analyse comparative. Le changement "
nRow
" et "nCol
" si vous voulez le tester sur un autre de taille moyennedata.frame
l'extraction d'un nombre différent de colonnes.Ce qui donnerait aux niveaux uniques. Si vous voulez les 300 premières valeurs dans ces colonnes, ce faire: