excuses si je suis double-post, mais j'ai essayé différentes choses que j'ai vues dans Stackoverflow et je ne peux pas vraiment résoudre le problème ni comprendre pourquoi je l'ai.
Donc j'ai un jeu de données comme celui-ci : p> et ce que je veux, c'est quelque chose comme ceci: p> J'ai essayé plusieurs choses avec des fonctions pivot Mais le fait que j'ai besoin d'extraire les noms de colonnes de la catégorie1 et de la catégorie2, mais de remplir des cellules avec des valeurs de la même colonne de DF me donnent toutes sortes de problèmes. P> Merci beaucoup pour l'aide! p> p>
4 Réponses :
L'approche suivante est une donnée de données.Table:
avec vos données: p> qui produira p> C'est essentiellement vos données, sauf par les différences sur les noms et la commande de colonne. Ceux-ci peuvent être corrigés avec les «CODE> SETNAMES CODE> et espère que cela aide. p> p> ET
SETCOLODE CODE>. P>
Qu'est-ce que là-bas: h2>
somme (données), by =. (Nom du Conseil ... code> totalisera vos données pour chaque combinaison unique de conseil, de période, de catégorie et de catégorie2. Veuillez envisager d'exécuter juste ce bit pour voir la sortie :
df [ somme (données), par =. (Nom du Conseil, période, catégorie, catégorie2)] code> li>
[ dcast (.sd, conductionnée + Période ~ Catégorie + Catégorie2, Value.var = V1)] Code> Convertit le tableau long qui a abouti à un large (le format vous voulez). Il dit qu'il veut le nom et la période du Conseil dans les lignes et la catégorie et la catégorie2 dans les colonnes, et que la variable de valeur est V1 (v1 est un nom factice donné dans la première commande chaînée, car je viens d'écrire
somme (données ) code>, sans lui donner un nom). Li>
ul>
Merci! Juste une question rapide: dans la 2e partie, j'obtiens l'erreur suivante "Erreur dans ValNames% Chin% Varnames: X est le type" Double "(doit être" Caractère "ou null)", à quelle variable serait-ce que cela se réfère? Désolé , pas vraiment utilisé pour utiliser des données.
Vous pouvez utiliser Fun.Accrégée = somme code> pour tout faire dans le
dcast code> Étape:
Dcast (DF, conducteur + Période ~ Catégorie + Catégorie2, Value.var = 'données', fun.agregate = somme) code> (réellement dans cet exemple spécifique, vous n'avez même pas besoin de
amusement.Accrété = somme code>, mais en général, je pense que l'ajout de cet argument fera la Sortie identique au code de votre réponse)
@Antval j'ai manqué des citations autour de V1 dans la dernière partie de celui-ci. S'il vous plaît voir mon édition
Dans cette situation, vous pouvez utiliser la fonction Spread () code>. Le code ressemble à:
Il y a 2 catégories de sorte que cela ne fonctionne pas. Mais merci
Voici une solution Tidyverse code> à l'aide de
pivot_wider code> pour transformer vos données en format large, puis utilisez
renommer code> pour modifier les noms de colonne. < Pré> xxx pré> p>
Merci @jonathan V. Solórzano. Cela ne me reçoit pas tout à fait ce que je veux, car plusieurs cellules ont plus d'une valeur pour les données, ce qui n'a pas beaucoup de sens, car dans l'ensemble de données d'origine, chaque cellule "Data" a une valeur unique lors de la combinaison de l'ID_COLS. Je reçois cette erreur: les valeurs dans données code> ne sont pas identifiées de manière unique; La sortie contiendra des listes-cols. * Utilisez
valse_fn = liste (Data = List) CODE> Pour supprimer cet avertissement. * Utiliser
valse_fn = Liste (Data = Longueur) CODE> Pour identifier l'endroit où les duplicats naissent * utilisent
valse_fn = liste (données = sommaire_fun) code> pour résumer des doublons
Vous pouvez ajouter valse_fn = liste (Data = Longueur) CODE> comme argument sur
PIVOT_WIDER CODE> Pour identifier l'endroit où les doublons se produisent et vérifient s'ils ont du sens ou non. En utilisant cette option, les entrées dupliquées doivent avoir une valeur 2. Si vous souhaitez rester avec les entrées dupliquées, vous pouvez ajouter
valide_fn = liste (Liste de données) code> à
pivot_wider code> puis
inness code> les colonnes.
Voici une autre approche de données.Table avec agrégation à l'intérieur dcast code>: