0
votes

Données pivotantes avec des valeurs de différentes colonnes dans R

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 : xxx

et ce que je veux, c'est quelque chose comme ceci: xxx

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.

Merci beaucoup pour l'aide!


0 commentaires

4 Réponses :


2
votes

L'approche suivante est une donnée de données.Table:

avec vos données: xxx

qui produira xxx

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 et ET SETCOLODE .

Qu'est-ce que là-bas:
  • somme (données), by =. (Nom du Conseil ... 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)]
  • la deuxième partie, [ dcast (.sd, conductionnée + Période ~ Catégorie + Catégorie2, Value.var = V1)] 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 ) , sans lui donner un nom).

    espère que cela aide.


3 commentaires

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 pour tout faire dans le dcast Étape: Dcast (DF, conducteur + Période ~ Catégorie + Catégorie2, Value.var = 'données', fun.agregate = somme) (réellement dans cet exemple spécifique, vous n'avez même pas besoin de amusement.Accrété = somme , 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



0
votes

Dans cette situation, vous pouvez utiliser la fonction Spread () . Le code ressemble à: xxx


1 commentaires

Il y a 2 catégories de sorte que cela ne fonctionne pas. Mais merci



2
votes

Voici une solution Tidyverse à l'aide de pivot_wider pour transformer vos données en format large, puis utilisez renommer pour modifier les noms de colonne. < Pré> xxx


2 commentaires

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 ne sont pas identifiées de manière unique; La sortie contiendra des listes-cols. * Utilisez valse_fn = liste (Data = List) Pour supprimer cet avertissement. * Utiliser valse_fn = Liste (Data = Longueur) Pour identifier l'endroit où les duplicats naissent * utilisent valse_fn = liste (données = sommaire_fun) pour résumer des doublons


Vous pouvez ajouter valse_fn = liste (Data = Longueur) comme argument sur PIVOT_WIDER 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) à pivot_wider puis inness les colonnes.



1
votes

Voici une autre approche de données.Table avec agrégation à l'intérieur dcast : xxx


0 commentaires