Je suis bloqué par le problème de résolution de données suivant. Chaque jeu de données a plusieurs valeurs de aValue
pour une valeur de aName
. Cela peut être facilement représenté dans un cadre de données propre. Je souhaite "étaler" la variable de l'ensemble de données dans des colonnes individuelles. (Je ne suis pas en mesure d'utiliser tidyr::spread
pour créer une sortie souhaitée en raison des clés en double.)Répartition des paires de valeurs clés dans les colonnes
###
# Desired output
###
# aName ds1 ds2 ds3
# a 1 10 100
# a 2 20 NA
# a 3 30 NA
# b 4 40 NA
# b 5 NA NA
# c NA 50 200
# c NA 60 300
# c NA NA 400
est-il un moyen bien rangé pour générer la sortie désirée?
ps: Je suis au courant de spread-key-value-pairs-when-keys-are-in-different-columns question, mais la solution
dcast(melt(someDatasets, id = "aName", na.rm = TRUE), aName~value)
ne produit pas le résultat souhaité, car une fonction d'agrégation length
est utilisée.
Où est la longueur utilisée et pourquoi est-ce pas souhaitable? –
Peut-être 'bind_rows (certainsDatasets)%>% group_by (jeu de données)%>% mute (aName = paste0 (aName, 1: n()))%>% spread (jeu de données, aValue)%>% mute (aName = substr (aName, 1, 1)) ». – lukeA
Ajoutez un ID secondaire basé sur le regroupement de "aName" et "dataset" (à partir de votre jeu de données "tidyData"), puis utilisez 'dcast'. Par exemple, si vous avez nommé l'ID secondaire "ID", vous pouvez faire 'dcast (tidyDataWithID, aName + ID ~ jeu de données, value.var =" aValue ")'. – A5C1D2H2I1M1N2O1R2T1