0
votes

Reshaping large à long terme avec plusieurs rangées

Il s'agit d'une partie de ma trame de données: xxx

J'ai besoin de: xxx

en mots; J'ai des valeurs pour la personne AK, HU et KO (et beaucoup d'autres). Tous ont noté la même chose - par conséquent, le nombre de lignes pour chaque identifiant unique est identique et que le nombre de valeurs sera également identique. Dans cette partie de la trame de données 1 et 2 ont deux valeurs, 3 ont 3 valeurs pour chaque personne. Il s'agit en fait de la tâche de choix forcé et donc des valeurs de valeur_1: 2 sont en réalité 1 et 0, mais je les ai remplacées avec A-Z pour montrer le tri.

J'ai essayé: xxx

qui ne fait pas l'affaire, car tous sont ajoutés en dessous, tandis que j'en ai besoin d'être remodelé à long selon leur identifiant (nom), mais les différents identifiers de noms devraient alors être placés dans des colonnes séparées côte à côte.

Merci pour votre aide.


0 commentaires

4 Réponses :


0
votes

Je devais inclure quelques petites étapes supplémentaires pour que cela soit fait puisque vous souhaitiez la sortie dans un ordre spécifique, mais cela devrait le faire: xxx

espère que cela aide!


2 commentaires

Merci beaucoup! Malheureusement, je ne reçois pas le bon ordre des rangées. Au lieu des valeurs de la première ligne inférieure à l'autre, plus les valeurs de la 2e rangée, je reçois quelque chose de différer. Savez-vous ce qui a mal tourné?


D'accord, j'ai mal interprété votre demande le premier tour. Mais j'ai édité ma réponse avec quelque chose qui m'a donné la sortie souhaitée.



0
votes

Utilisation de l'entrée affichée dans la note ci-dessous, exécutez la touche Code> Affichée dans la question, puis transformez value_1 code>, value_2 code> et Value_3 code> à seulement 1, 2 et 3 et ajoutez également une colonne code> subseq code> pour distinguer les lignes qui ont autrement la même clé. Débarrassez-vous de la valeur vide code> des lignes CODE> Retour à un formulaire large à l'aide de dcast code> Supprimer le SUBSEQ code> Colonne:

> wide
  num AK HU KO
1   1  0  1  1
2   2  0  1  1
3   3  1  1  1
4   1  1  1  1
5   2  1  1  0
6   1  0  0  1
7   2  0  0  0


3 commentaires

THX, bien que votre sortie soit différente de celle que j'ai indiquée ci-dessus. J'aurais besoin de la colonne sous chaque identifiant de nom pour répertorier la ligne de ligne, au lieu de la colonne.


Ont fixé et ajouté un chèque à la fin pour que cela donne une réponse identique à celle attendue en question.


Je comprends que mes informations ne suffisaient pas, alors je l'ai modifiée ci-dessus. En réalité, les valeurs ne sont que de 0 et 1, mais afin que je puisse montrer la réorganisation dont j'ai besoin, j'ai utilisé des lettres.



0
votes

Ceci fournira la sortie souhaitée: xxx

Cependant, vous devez clarifier quelle est la logique de la colonne de colonne peuplée. Je devais supposer la même lettre (non sensible à la casse) pour la colonne AK aura le même nombre.


1 commentaires

Clarifier; Chaque personne avec un nom de nom a dû évaluer le même nombre d'entités; Voici donc que chacun d'entre eux a dû évaluer 3 groupes et chaque groupe a un nombre défini d'éléments (dans l'exemple de 2 ou 3 éléments). Les remodeler vous débarrasseront du regroupement, mais conserve la commande. Cela clarifie-t-il quelque chose?



0
votes

Alternativement, voici une solution qui utilise melt () code> et dcast () code> à partir de la catégorie paquet. rowid (nom) code> est utilisé pour créer des numéros de ligne pour chaque nom code> individuellement code> individuellement.

Il reproduit le résultat attendu, y compris la colonne num code>. p> xxx pré>

library(data.table)
df <- fread("
name      value_1  value_2  value_3
 AK          x       X
 AK          y       Y
 AK          m       M         B
 HU          z       Z
 HU          a       A
 HU          f       F         C
 KO          b       B
 KO          c       C
 KO          d       D         B", fill = TRUE)


0 commentaires