簡體   English   中英

按因子水平和總計匯總

[英]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

我們可以使用XTABSaddmargins獲得的合計總額:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM