向表中添加列总和

Bla*_* S. 16 r

数据结构是:

Company        Marital
a              single
a              married
b              widow
c              married
b              single
Run Code Online (Sandbox Code Playgroud)

我正在使用table(df$Company,df$Marital),但我希望有一个显示行总数的列,如下所示:

            a     b    c    Total
married     50    20   5    75
single      10    10   10   30
widow       5     50   0    55
Run Code Online (Sandbox Code Playgroud)

是否有不同的表函数提供行和附加选项?

Dav*_*son 24

你可以使用cbindrowSums之后:

tab <- table(df$Company,df$Marital)
tab <- cbind(tab, Total = rowSums(tab))
Run Code Online (Sandbox Code Playgroud)

您还可以使用内置addmargins功能:

tab <- addmargins(table(df$Company,df$Marital), 2)
Run Code Online (Sandbox Code Playgroud)

(2添加总和列的方法,但不是总和行 - 你可以省略它,你会得到两者).


Jil*_*ina 13

您可以使用 addmargins

x <- table(df$Company,df$Marital)
addmargins(x)         # option 1
ftable(addmargins(x)) # option 2
Run Code Online (Sandbox Code Playgroud)


Net*_*tle 5


library(dplyr)

df <- tribble(
        ~status,      ~a,    ~b,  ~c,
        "married",     50,    20,   5,
        "single",      10,    10,  10,
        "widow",       5,     50,   0
        )

df %>% 
  mutate(Total_Row = rowSums(.[2:4]))
#> # A tibble: 3 x 5
#>   status      a     b     c Total_Row
#>   <chr>   <dbl> <dbl> <dbl>     <dbl>
#> 1 married 50.0   20.0  5.00      75.0
#> 2 single  10.0   10.0 10.0       30.0
#> 3 widow    5.00  50.0  0         55.0

df %>% 
  mutate(Total_Row = select(., 2:4) %>% rowSums())
#> # A tibble: 3 x 5
#>   status      a     b     c Total_Row
#>   <chr>   <dbl> <dbl> <dbl>     <dbl>
#> 1 married 50.0   20.0  5.00      75.0
#> 2 single  10.0   10.0 10.0       30.0
#> 3 widow    5.00  50.0  0         55.0
Run Code Online (Sandbox Code Playgroud)


Sam*_*rke 5

tabyljanitor 包中的函数正是这样做的。用你的数据:

library(janitor)
dat %>%
  tabyl(Marital, Company) %>%
  adorn_totals("col")

 Marital a b c Total
 married 1 0 1     2
  single 1 1 0     2
   widow 0 1 0     1
Run Code Online (Sandbox Code Playgroud)

自我推销披露:我编写并维护了这个包。 发布此答案作为问题,询问支持添加总计的 table() 的替代方法 - 这正是 tabyl() 所做的。