[英]aggregate by factor levels and also totals
我試圖為每個因子級別的數值列求和,但也得到結果數據框中所有級別的總和。
例如:
# Type gender population
# A male 100
# B male 150
# A female 125
# B female 175
使用聚合函數我可以得到:
aggregate(population ~ gender, df, sum)
# gender population
# male 250
# female 300
但有沒有辦法得到一個輸出,也是兩個級別的總和?
# gender population
# all 550
# male 250
# female 300
這可以在SAS中使用proc制表輕松完成,希望有一種方法可以用R做。
提前致謝,
編輯
給出的答案都有效,但我試圖找到一個不那么特別的解決方案。 我正在尋找可以處理多個變量的東西,例如像這樣的輸出用於更復雜的數據框:
# Type gender population
# all all 500
# all male 200
# all female 300
# A all 250
# A male 100
# A female 150
# B all 250
# B male 100
# B female 150
如果不夠清楚,我道歉。
你可以rbind
,也就是說
d1 <- aggregate(population ~ gender, df, sum)
rbind(data.frame(gender = 'total', population = sum(d1$population)), d1)
# gender population
#1 total 550
#2 female 300
#3 male 250
我們可以使用XTABS與addmargins獲得的合計總額:
df1 <- read.table(text = "
Type gender population
A male 100
B male 150
A female 125
B female 175", header = TRUE, stringsAsFactors = FALSE)
df2 <- read.table(text = "
Type gender population
all all 500
all male 200
all female 300
A all 250
A male 100
A female 150
B all 250
B male 100
B female 150", header = TRUE, stringsAsFactors = FALSE)
data.frame(addmargins(xtabs(population ~ gender, df1)))
# gender Freq
# 1 female 300
# 2 male 250
# 3 Sum 550
data.frame(addmargins(xtabs(population ~ gender, df2)))
# gender Freq
# 1 all 1000
# 2 female 600
# 3 male 400
# 4 Sum 2000
還有包裝janitor
:
x <- aggregate(population ~ gender, d, FUN=sum)
library(janitor)
adorn_totals(x, "row")
#gender population
#female 300
# male 250
# Total 550
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.