J'ai un sondage Dataframe contenant des évaluations de trois catégories. Je souhaite voir des évaluations de chaque catégorie dans chaque colonne, mais elle est mélangée comme celle-ci, ce que je veux obtenir est: p> ID a1 a2 a3
1 c1-e1 c2-e1 c3-e2
2 c1-e1 c2-e0 c3-e2
3 c1-e1 c2-e2 c3-e0
3 Réponses :
Nous pourrions utiliser Si vous avez des colonnes limitées, vous pouvez effectuer manuellement des colonnes (comme je l'ai fait) ou l'avoir utilisée de manière programmative en utilisant vous pouvez Comme mentionné par @farah Nazifa Si nous voulons conserver la commande de ligne aussi bien pour chaque colonne, nous pouvons utiliser Split code> pour séparer les valeurs dans la colonne en fonction des noms de colonne.
coller code> et
SEQ code> en fonction de la structure de vos colonnes. p>
cbind code> la première colonne pour obtenir
id code> colonne arrière. p>
mapply code> comme suit. p>
col_values <- unlist(df[cols])
data.frame(mapply(function(x, y) x[y],
split(unlist(df[vals]), col_values), split(row(df[vals]), col_values)))
# c1 c2 c3
#q41 e1 e1 e2
#q22 e1 e0 e2
#q63 e1 e2 e0
La réponse est similaire mais pas exacte. Y a-t-il quelque chose de plus qui pourrait être fait?
@Farahnazifa ce qui manque dans la réponse?
C2 & C3 ne correspond pas à la sortie attendue
@Farahnazifa merci, vous avez peut-être raison. J'ai mis à jour la réponse pour ce cas aussi.
Je ne sais pas pourquoi mais "mapply" ne fonctionnait pas pour moi. Mais je pouvais apprendre à gérer ce genre de situation. Merci beaucoup!
ressemble à une pile à long terme, puis un remodelage au format large y accomplira. Il y a environ 3,2 millions de variations sur cette logique, mais voici un:
reshape(tmp, idvar="ID", timevar="name", direction="wide") # ID value.c2 value.c1 value.c3 #1.1 1 e1 e1 e2 #2.1 2 e0 e1 e2 #3.1 3 e2 e1 e0
Exactement ce que je cherchais! Je viens de supprimer
Nous pouvons utiliser melt / dcast code> à partir de
data.Table code>
données h3>
Cela me montre la réponse la plus proche que je voulais mais que je ne puisse pas garder l'ordre de la ligne d'origine. Puis-je vous poser une autre suggestion?
@ Ji-Wonlee Si je vérifie votre sortie attendue, c'est le même ordre. Peux-tu être plus précis
@ Ji-Wonlee Je suppose que votre commentaire est basé sur un autre jeu de données. Est-ce vrai
(+) Neverminet! Je pensais cela avec le commentaire d'autres. Merci pour votre aide Tho.
Quelle est la logique derrière les données initiales et votre sortie attendue? Ce n'est pas clair pour moi ce qui se passe ici.
@ThelaTemail Merci pour le commentaire et mes excuses pour l'explication! J'essaie de construire des variables indépendantes pour une analyse de régression. Dans ce cas, les évaluations de chaque catégories (C1, C2, C3) seraient trois variables indépendantes. Est-ce suffisant pour vous donner le contexte?
@THelaMILLILL Ainsi cette enquête a posé l'évaluation des répondants pour chaque catégorie. Mais l'ordre de question a été randomisé. Ils ont demandé à quelqu'un de l'ordre de C2> C1> C3 (ID 1 dans la première matrice), puis ils ont demandé à un autre comme C1> C3> C2 (ID 2). L'équipe de l'enquête n'a pas arrangé ces données par catégorie.