0
votes

R - Meilleur moyen de somme des catégories stockées comme chaîne, puis convertir en chaîne?

J'ai des données stockées qui inclut une colonne de chaîne qui ressemble un peu à un dictionnaire. La forme générale est des éléments répétitifs de "catégorie: montant", par exemple "A: 1, B: 3, c: 10", etc.

dans toute la table, il ressemblerait à quelque chose comme: xxx

Je veux trouver la somme de chaque colonne regroupée par l'utilisateur, mais pour les données1 et les données2, les sommes doivent être regroupées par les catégories imbriquées (A, B et C). Le résultat souhaité basé sur la table d'échantillonnage ci-dessus serait le suivant: xxx

Je suis tenu de renvoyer les données de ce formulaire de chaîne. Quelle serait la meilleure façon de structurer les données de la chaîne, d'effectuer les calculs nécessaires sur toutes les colonnes, puis de renvoyer les données calculées en une seule colonne?


0 commentaires

5 Réponses :


1
votes

Voici une solution de base désordonnée, je suis sûr que je peux être améliorée (mais obtient le résultat): xxx


0 commentaires

0
votes

Je pense à Tidyverse Package (principalement dplyr < / Code> et TidyR ) ... Peut-être que ce sera possible avec quelque chose comme ceci:

  1. Séparez data1 et data2 colonnes avec séparé () ou extraire () , puis
  2. group_by () utilisateurs, sommarise_all () avec somme () , puis
  3. Faites une nouvelle colonne par Mutate () avec des noms et des valeurs concaténants par simple paste0 () ?

    Cela dépend de vos données réelles, si vous avez toutes les catégories pour tous les utilisateurs (comme "A: 1, B: 2, C: 3" ) ou s'il arrive qu'il existe une certaine catégorie manquant (comme "b: 2, c: 3" sans a ).


0 commentaires

1
votes

Faire cela en deux parties.

  1. somme achats et plaintes pour chaque utilisateur . xxx
    1. Faites la manipulation sur data1 et data2 et joindre avec df1 xxx

      ceci renvoie xxx


0 commentaires

0
votes

une solution , qui suppose que la structure de A:?, b:?, c:? est tout le temps donné. Premier Split par utilisateur que d'utiliser gsub et supprime tout 0-9, , puis divisé en utilisant Read.Table , calculez le colsums et appelez coller pour insérer à nouveau A:?, B:?, C:? . Finlay combine ceci avec le résultat de colsums pour les colonnes achats et plaintes : xxx


0 commentaires

1
votes

Le fichier plus ou moins ressemble à un objet JavaScript. Ie JSON . Le format général de JSON est [{"A": 1, "B": 2, "C": 10}, {"A": 2, "B": 3, "C": 30}] . Nous pouvons transformer la chaîne en utilisant des expressions régulières et l'utilisation jsonlite :: fromjson : xxx


0 commentaires