0
votes

Combiner des cadres de données horizontalement en r avec des noms

J'ai un ensemble de 12 cadres de données (DF1, DF2, ... DF12) avec un format similaire comme celui-ci: xxx

Les cadres de données sont toujours similaires (12x6) et le Noms de colonne aussi (mois, moyenne, max, min, sd, n). Comment puis-je faire pour combiner les 12 cadres de données horizontalement pour obtenir quelque chose comme ceci (avec les noms du DF ci-dessus): xxx

J'ai une liste contenant mes 12 cadres de données : xxx


1 commentaires

Bonjour :) Je me demande pourquoi vous voulez accomplir ce joli affichage humain-réchauffé dans R. Pour effectuer une analyse plus approfondie, je pense que cela n'est pas recommandé (voir r4ds.had.co.nz/tiidy-data.html ). Si vous voulez un "beau document", je vous suggère de jeter un coup d'œil à RMARKMODDOWN et Kable () comme des fonctions.


3 Réponses :


1
votes

dplyr :: bind_cols (df) peut faire le tour.


2 commentaires

Exactement, ça marche! Dans cette analyse, les 12 DF ont des valeurs partout. Maintenant, j'aimerais obtenir quelque chose de tout à fait automatique et dans une autre analyse avec un autre ensemble de 12 DF, le dernier DF est vide (aucune donnée disponible dans ce tableau, elle est normale dans cette analyse). Et dans ce cas, r nous renvoie "Erreur: l'argument 12 doit être longueur 12, pas 0". Est-il possible d'ajouter quelque chose comme "faire comme l'autre DF, même si tu es vide"?


Il renvoie l'erreur car le dernier DF est vide. Peut-être que vous pouvez créer artificiellement un DF avec la même taille (12x5) et le remplir avec NAS.



1
votes

Vous ne pouvez pas disposer de cadres de données multi-index dans R. Donc, il n'ya aucun moyen d'avoir les noms DF au-dessus des colnames. Pour les lier ensemble de toute façon, essayez ce qui suit:

var_names <- ls(pattern = "^Final_analysis")
do.call(cbind, mget(var_names))


2 commentaires

Mais alors je viens d'obtenir une liste `> var_names <- LS (Envir = globalenv (), motif =" ^ final_analysis ")> DF <- mget (Names)> A <- do.call (cbind, liste (df)) > A [ 1] DF1 Liste, 6 Liste DF2, 6 Liste DF3, 6 Liste DF4, 6 Liste DF5, 6 Liste 6 DF6, 6 ... `


Vous n'avez pas besoin d'utiliser la liste () dans ce cas. Faites ceci: do.call (cbind, mget (Var_Names))



1
votes

Comme @eyayaw mentionné, il n'est pas possible d'afficher les noms DF au-dessus des noms de colonne.

Cependant, nous pouvons contourner cela en collant les noms DF sur les noms de colonne avant de tout combiner avec dplyr: : bind_cols () comme suggéré par @grouah

une approche pour le faire à l'aide de dplyr et packages de Purrr : xxx

créé sur 2020-06-16 par le RepreX paquet (v0.3.0)

comme exemple, je viens d'utiliser les données mtcars 3 fois dans la liste DF, mais cela devrait fonctionner pour tout nommé Liste des cadres de données qui ont le même nombre de lignes (nombre de colonnes peuvent être différents).


0 commentaires