-1
votes

R Comment "Étaler" des données sans paire de valeur clé

J'ai des données: xxx

et je voudrais vous retrouver avec: xxx

J'ai essayé la propagation mais je ne peux pas atteindre une ligne par incident; Je ne pense pas avoir un moyen de créer une paire de valeur clé alors je me demande s'il y a une autre méthode pour le faire.


4 commentaires

La quatrième rangée doit être A , pas b c .


Oui merci, corrigé


Associé Transpose / Remoderataframe sans "Timevar" de long à Format large


Ce lien fournit plusieurs solutions et j'en ai ajouté l'un d'entre eux comme une réponse ci-dessous, merci


5 Réponses :


0
votes

Voici ma solution:

df %>%
  select(-rowID) %>%
  group_by(incidentID) %>%
  nest() %>%
  mutate(data = map_chr(data, ~str_c(.x$participant.type, collapse = '_'))) %>%
  separate(data, paste0('participant.type.', 0:2)) %>%
  mutate_at(2:4, ~replace_na(.x, ''))


0 commentaires

0
votes

Nous pouvons utiliser reshape2 :: dcast pour ce xxx

avec les données xxx


0 commentaires

2
votes

Avant d'utiliser Spread () code>, vous devez créer une touche code> appropriée CODE> argument.

df %>% select(-rowID) %>%
       group_by(incidentID) %>%
       mutate(id = 1:n()) %>%
       spread(id, participant.type)

#   incidentID  `1`   `2`   `3`  
#        <int>  <fct> <fct> <fct>
# 1          1  A     B     NA   
# 2          2  A     NA    NA   
# 3          3  A     B     C    
# 4          4  B     C     NA 


1 commentaires

C'est la meilleure solution.



0
votes

Le lien "Question associé" fournie par @Markus affiche une variété d'autres solutions, notamment ce qui semble être le plus concis dans un format diede: xxx

donne: xxx

a


2 commentaires

Si vous ne supprimez pas la variable Rowid , la sortie ne sera pas ce que vous affichez ci-dessus. Et votre solution est équivalente à la mienne. Vous n'avez pas besoin de la poster à nouveau.


J'apprécie votre aide, je pense que j'ai posté le code sur la base du lien avant de voir le vôtre. J'ai marqué le vôtre comme la solution.



1
votes

Étant donné que votre regroupement est basé sur la commande à ligne dans la colonne ICIENIDID. La solution simple suivante fonctionnera également.

Il ne fait que filtrer le fichier de données, puis la fusionner à la fin.

Ce n'est probablement pas la meilleure solution en termes d'utilisation efficace de la puissance de calcul, mais c'est Facile à comprendre. xxx

résultat: xxx


0 commentaires