0
votes

Créer une nouvelle colonne qui prend la somme d'une autre valeurs de colonne et groupe par condition dans R

J'aimerais ajouter une nouvelle colonne intitulée "Pop Sum" qui prend la somme de toutes les lignes contenant des données sur la population et est regroupée par emplacement. J'ai essayé group_by avec bâtiment puis somme = somme (pop) mais cela fonctionnait. Je vais simplement montrer un bâtiment, mais il y a 30+ bâtiments uniques de référence de référence ci-dessous:

`Date Ran`           Year Month      Building   Population   MonthN  Pop Sum
  <dttm>              <dbl> <chr>         <fct>      <dbl>     <chr>      <num>
1 2018-09-28 00:00:00  2018 September     ALEX       1196       Sep        7014
2 2018-08-30 00:00:00  2018 August        ALEX       1172       Aug        7014
3 2018-07-19 00:00:00  2018 July          ALEX       1171       Jul        7014
4 2018-06-30 00:00:00  2018 June          ALEX       1167       Jun        7014
5 2018-05-11 00:00:00  2018 May           ALEX       1154       May        7014
6 2018-04-09 00:00:00  2018 April         ALEX       1154       Apr        7014


4 commentaires

Groupe_By (Bâtiment)%>% Summarize (pop_sum = somme (population)) devrait fonctionner, pouvez-vous partager votre code?


Qu'est-ce que vous voulez dire exactement le groupe_by / sum "n'a pas fonctionné"? Avez-vous utilisé dplyr ? Avez-vous utilisé un résumée () ou muté () ? J'aurais pensé que ce dernier aurait dû travailler très bien. Lorsque vous demandez de l'aide, veuillez partager vos données dans un format reproductible Cela facilite la copie / coller des données dans R (ce n'est pas facile avec vos données actuelles). Essayez également d'inclure des données avec plus d'un bâtiment pour vous assurer que nous testons correctement le groupement.


Mon excuse - je vais changer le format de questions. J'ai utilisé le dplyr mais j'ai donné la somme de tout le total de la population - non séparé par la construction.


@Dinho Êtes-vous sûr d'avoir utilisé un group_by ? Ce que vous décrivez n'a pas de sens. S'il vous plaît montrer votre code.


3 Réponses :


2
votes

in dplyr code>, vous utilisez généralement des fonctions récapitulatives pour obtenir une autre sortie. Toutefois, avec le groupe et l'incursion, vous pouvez ajouter une colonne de résumé.

 newdf <- df %>% 
    group_by(Building) %>% 
    mutate(PopSum = sum(Population, na.rm=TRUE)) %>% 
    ungroup()


0 commentaires

2
votes

Voici un exemple avec data.able.table

données: xxx

code: xxx

est-ce ce que vous recherchez?


1 commentaires

Merci! C'est exactement ça, puis certains!



0
votes

Voici une solution de base r à l'aide de Ave code>, vous pouvez peut-être essayer avec IT

df <- within(df,PopSum <- ave(Population,Building,FUN = sum))


0 commentaires