Quelle est la meilleure façon de remodeler / restructurer les données?

12

Je suis assistante de recherche pour un laboratoire (bénévole). Moi et un petit groupe avons été chargés de l'analyse des données pour un ensemble de données tirées d'une grande étude. Malheureusement, les données ont été collectées avec une application en ligne, et elle n'était pas programmée pour produire les données sous la forme la plus utilisable.

Les images ci-dessous illustrent le problème de base. On m'a dit que cela s'appelait une «refonte» ou une «restructuration».

Question: Quel est le meilleur processus pour passer de l'image 1 à l'image 2 avec un grand ensemble de données avec plus de 10 000 entrées?

Ceci est un exemple, le fichier réel contient plus de 10 000 entrées.  J'ai un code couleur pour plus de clarté

C'est en quoi tout cela doit être converti.

Wilkoe
la source
1
Veuillez diviser cela en deux questions distinctes et fournir des exemples de données (vous pouvez également omettre vos antécédents, sauf indication contraire). En gros, sur (1), vous voudrez trouver un mappage, puis fusionner pour attacher des nombres. (2) dépend fortement du type de manipulations que vous voudrez faire; forfaits les plus populaires de R pour ce genre de chose comprennent data.table, dplyr, plyret reshape2- je recommande d' éviter les tables Excel et pivot si possible.
Max Ghenis
Je suppose que vos problèmes de nettoyage des données sont plus étendus que ceux que vous pouvez aborder dans le type de questions générales. Vous voudrez peut-être regarder OpenRefine.org. Quelques vidéos et un téléchargement pourraient vous aider beaucoup avec cette partie de votre analyse.
John
3
Cette question semble être hors sujet car elle concerne le nettoyage et l'organisation des données rudimentaires, pas les statistiques.
Nick Stauner
2
Je dirais que ce n'est pas hors sujet, car le nettoyage de vos données, aussi "rudimentaire" que le processus puisse être, est essentiel à son utilisation. Cela fait partie d'un problème plus vaste.
shadowtalker
2
@NickStauner, IIRC J'ai voté pour la clôture comme «peu claire / a besoin de plus d'informations», pas comme hors sujet. Il me semble que le nettoyage des données entre dans le cadre des statistiques en gros, et bien que je reconnaisse que les bonnes personnes peuvent être en désaccord, je pense que de telles questions peuvent être sur le sujet. Considérez que nous avons une balise de nettoyage des données , et ces threads CV: 1 , 2 , 3 et 4 .
gung - Réintégrer Monica

Réponses:

12

Comme je l'ai noté dans mon commentaire , la question ne contient pas suffisamment de détails pour qu'une véritable réponse puisse être formulée. Puisque vous avez besoin d'aide même pour trouver les bons termes et formuler votre question, je peux parler brièvement de généralités.

2

Dans un certain sens, le nettoyage des données peut être effectué dans n'importe quel logiciel et peut être effectué avec Excel ou avec R. Il y aura des avantages et des inconvénients aux deux choix:

  • Excel: Excel est presque certainement le choix le plus courant pour le nettoyage des données (voir R fortunes # 59 pdf ). Il est également considéré comme un mauvais choix par les statisticiens. La raison principale est qu'il est difficile de s'assurer que vous avez tout attrapé ou que vous avez tout traité de manière identique, et il n'y a aucun enregistrement des modifications que vous avez apportées, vous ne pouvez donc pas revoir ces modifications plus tard. L'avantage d'utiliser Excel est qu'il sera plus facile de voir ce que vous faites et que vous n'avez pas besoin d'en savoir beaucoup pour apporter des modifications. (Les statisticiens considéreront ce dernier comme un con supplémentaire .)
  • R: R nécessitera une courbe d'apprentissage abrupte. Si vous n'êtes pas très familier avec la R ou la programmation, les choses qui peuvent être faites assez rapidement et facilement dans Excel seront frustrantes à essayer dans R. D'un autre côté, si jamais vous devez recommencer, cet apprentissage aura été temps bien dépensé. De plus, la possibilité d'écrire et d'enregistrer votre code pour nettoyer les données dans R atténuera les inconvénients énumérés ci-dessus. Voici quelques liens qui vous aideront à démarrer avec ces tâches dans R:

    Vous pouvez obtenir beaucoup de bonnes informations sur Stack Overflow :

    Quick-R est également une ressource précieuse:

    Mettre les nombres en mode numérique:

    Une autre source inestimable pour en savoir plus sur R est le site Web d'aide aux statistiques de l'UCLA :

    Enfin, vous pouvez toujours trouver beaucoup d'informations avec le bon vieux Google:


Mise à jour: il s'agit d'un problème courant concernant la structure de votre ensemble de données lorsque vous avez plusieurs mesures par «unité d'étude» (dans votre cas, une personne). Si vous avez une ligne pour chaque personne, vos données sont dites sous forme `` large '', mais alors vous aurez nécessairement plusieurs colonnes pour votre variable de réponse, par exemple. D'un autre côté, vous ne pouvez avoir qu'une seule colonne pour votre variable de réponse (mais avoir plusieurs lignes par personne, par conséquent), auquel cas vos données sont dites sous une forme `` longue ''. Passer d'un format à l'autre est souvent appelé «remodeler» vos données, en particulier dans le monde R.

  • La fonction R standard pour cela est ? Remodeler . Il existe un guide d'utilisation reshape()sur le site Web d'aide aux statistiques de l'UCLA.
  • Beaucoup de gens pensent qu'il reshapeest difficile de travailler avec. Hadley Wickham a contribué à un package appelé reshape2 , qui vise à simplifier le processus. Le site Web personnel de Hadley pour reshape2 est ici , l'aperçu de Quick-R est ici , et il y a un joli tutoriel ici .
  • Il y a de nombreuses questions sur SO sur la façon de remodeler les données. La plupart d'entre eux consistent à passer du large au long, car c'est généralement ce à quoi les analystes de données sont confrontés. Votre question concerne le passage du long au large, ce qui est beaucoup moins courant, mais il existe encore de nombreux sujets à ce sujet, vous pouvez les parcourir avec cette recherche .
  • Si vous avez l'intention d'essayer de le faire avec Excel, il existe un fil de discussion sur l'écriture d'une macro VBA pour Excel pour répliquer la fonctionnalité de remodelage ici: fondre / reformer dans Excel en utilisant VBA?
gung - Réintégrer Monica
la source
2
Cette question, et cette réponse, illustre bien pourquoi la programmation de la littératie est de plus en plus nécessaire pour à peu près tout type de recherche. Je vais rédiger une réponse plus complète à cette question que je vais également publier sur mon blog, mais je voulais obtenir ce commentaire avant d'oublier.
shadowtalker
2
Je suis d'accord dans une certaine mesure mais "nécessaire" et "tout type de recherche" va un peu loin. Beaucoup de disciplines ne traitent pas souvent de données sales et de nombreux chercheurs de premier plan n'ont jamais eu besoin de toucher à un langage de programmation.
Behacad
Wow, merci à tous. Il me faudra un peu de temps pour traiter et intégrer toutes ces informations qui sont très nouvelles pour moi. Un peu d'une méta tangente, il semble que j'ai stimulé ma question ... Imaginez-vous tombé dans un pays étranger sans connaissance de sa langue / culture, c'est moi et les statistiques. J'apprécie le temps que vous avez tous pris dans votre réponse.
Wilkoe
J'ai ajouté une modification dans l'espoir de clarifier ma question initiale, bien que la question semble fermée.
Wilkoe
La question est fermée, @ user48538, et cette version est plus clairement hors sujet que la précédente, malheureusement. Si vous avez 10 000 lignes, vous ne voulez certainement pas essayer de le faire dans Excel. Vous devez vraiment utiliser R ou un logiciel de programmation similaire. Le nom de l'opération spécifique est de remodeler votre jeu de données de «long» à «large», j'ajouterai quelques liens supplémentaires pour vous. De plus, si vous êtes un volontaire de premier cycle, avec peu ou pas d'expérience en statistiques ou en programmation, il était hautement irresponsable de quiconque de vous assigner cette tâche, à mon humble avis. Il n'y a aucun moyen que cela soit votre tâche.
gung - Rétablir Monica
0

Essayez de suivre en utilisant R:

> ddf
   sess_id user_id     quest  response
1        1       a       age        29
2        1       a satisfied  st_agree
3        1       a    gender      male
4        1       a     phone    iphone
5        2       a       age        29
6        2       a satisfied not_agree
7        2       a    gender    female
8        2       a     phone    iphone
9        3       b       age        29
10       3       b satisfied     agree
11       3       b    gender      male
12       3       b     phone   android
> 
> library(reshape2)
> dcast(ddf, sess_id+user_id ~ quest, value.var='response')
  sess_id user_id age gender   phone satisfied
1       1       a  29   male  iphone  st_agree
2       2       a  29 female  iphone not_agree
3       3       b  29   male android     agree
rnso
la source
0

Dans scala, cela s'appelle une opération "exploser" et peut être effectuée sur un dataFrame. Si vos données sont un rdd, vous devez d'abord convertir en dataFrame via la toDFcommande, puis utiliser la .explodeméthode.

Lucas Roberts
la source