-3
votes

0 rangées lors de la fusion de données.frame dans r

Fondamentalement chaque fois que j'essaie de fusionner les deux données de données, je récupère une donnée fusionnée.frame avec 0 lignes.

Les deux cadres de données ont un nombre différent de lignes (une 122 l'autre 112), un nombre différent de colonnes. et sont similaires à ceux-ci (les données sont toutes inventées NDR): df1 xxx

df2 xxx

comme vous pouvez l'imaginer, je veux les fusionner par s_id . Je ne suis pas intéressé à garder les rangées qui ne sont pas présentes dans les deux dataframes. J'ai essayé:

  • fusion (df1, df2)
  • fusion (df1, df2, by = s_id)
  • fusion (df1, df2, by = s_id, all = false) et même: fusion (df1, df2, by = s_id, all = true) J'utilise RStudio et je charge directement le jeu de données des "données d'importation". Le jeu de données est à l'origine à la fois .csv . Lorsque je demande typeof () le deux jeu de données, il dit qu'ils sont la liste.

    mise à jour: Bonjour à tous, il y avait précisément un problème d'entrée. Dans DF2, tous les noms de la colonne "s_id" avaient des espaces vides après que je n'étais pas au courant. Merci beaucoup pour votre aide.


9 commentaires

Peut-être des espaces de fuite ou de pointe dans l'une des colonnes S_ID?


Fusion (DF1, DF2, BY = "S_ID") doit fonctionner - Remarque Vous devez citer les noms de colonne - ne pas le faire entraînerait une erreur sauf si vous aviez un objet appelé s_id < / code> dans votre environnement.


Salut, merci pour la réponse; Qu'entendez-vous en traînant?


J'ai essayé "fusion (df1, df2, by =" s_id ")" Cela ne fonctionne pas


Vous devriez ajouter un échantillon de vos données de données. Utilisez dput (tête (df1)) et dput (tête (DF2)) et coller la sortie dans votre question.


désolé mais je ne peux vraiment pas.


Vous pouvez masquer toutes les informations sensibles, mais vous devez fournir un échantillon lorsque le problème est reproduit si vous souhaitez une aide supplémentaire. Sinon, c'est une prévention pure. Je ferais une attention particulière à la suggestion de @ 42 et assurez-vous que le respect de la WhiteSpace a été supprimé des deux variables d'identification.


Montrer la sortie de str (df1); str (DF2)


Salut merci à tous pour la réponse et désolé d'être trop vague. Je ne sais pas comment masquer les données sensibles et je préférerais avoir une mauvaise critique ici que de jouer avec des informations privées à cause de mon inexpérience. Mais merci à tous pour les réponses, sérieusement.


3 Réponses :


0
votes

Puis-je demander quel code vous utilisez pour lire les données dans RStudio? On dirait que vous pourriez le charger de manière incorrecte. Essayez: XXX


0 commentaires

0
votes

On dirait que vous avez un problème de type de données. Si classe (DF1) renvoie "liste", puis fusionner et joindre des fonctions ne saura pas comment traiter la variable. Essayez de forcer votre type de données comme ci-dessous: xxx


2 commentaires

La classe (DF1) renvoie "Dataframe"


@Tim: typeof (df1) devrait renvoyer "liste" si DF1 est un fichier de données. Aucune coercition ne devrait être nécessaire.



0
votes

On dirait qu'il existe un problème d'entrée de données obscur. La ligne fusion (df1, df2) code> aurait dû être capable de fournir un résultat ... Sauf s'il y a un problème avec l'une de ces colonnes qui empêche la correspondance des colonnes "S_ID", ou il y a une différence subtile dans la nommage des colonnes. Donc, pour enquêter sur cela, vous allez d'abord essayer:

intersect(as.character(df1$S_ID), as.character(df2$S_ID))


0 commentaires