2017-07-27 2 views
0

J'ai des données avec les 3 variables d'intérêt suivantes (Kanton, Öffentlich_Privat, Value) Kanton a 26 niveaux, Öffenlich_Privat a 2 niveaux. Je voudrais maintenant agréger la somme pour chaque canton par niveau d'Öffentlich Privat. Je connais le code pour le faire par groupe, mais comment faire deux niveaux plus bas?signifie par sous-groupe d'un groupe

aggregate(data$Wert, list(data$Kanton), mean) 

    > head(data) 
Jahr Forstzone Kanton   Eigentümertyp    Variable Wert Privat_Öffentlich 
1: 1975 Schweiz Schweiz Eigentümertyp - Total Anzahl Waldeigentümer 261471    Total 
2: 1975 Schweiz Schweiz Eigentümertyp - Total Gesamte Waldflächen 1114137    Total 
3: 1975 Schweiz Schweiz Eigentümertyp - Total Produktive Waldflächen 978221    Total 
4: 1975 Schweiz Schweiz   Privatwälder Anzahl Waldeigentümer 257722   Privat 
5: 1975 Schweiz Schweiz   Privatwälder Gesamte Waldflächen 297443   Privat 
6: 1975 Schweiz Schweiz   Privatwälder Produktive Waldflächen 297443   Privat 
+0

Waht est votre sortie attendue – akrun

+2

comme dans l'aide de l'agrégat déclaré: '= par une liste de regroupement elements'. Ajoutez simplement les deux facteurs dans la liste: 'list (data $ Kanton, data $ Öffentlich Privat)' – Jimbou

Répondre

1
library(tidyverse) 
data %>% group_by(`Öffentlich Privat`, Kanton) %>% 
    summarise(Total = sum(Value, na.rm=TRUE))