Добавить сумму столбца в таблицу

Структура данных:

Company        Marital
a              single
a              married
b              widow
c              married
b              single

Я использую table(df$Company,df$Marital), но хочу иметь столбец, который показывает итоговое количество строк, например следующее:

            a     b    c    Total
married     50    20   5    75
single      10    10   10   30
widow       5     50   0    55

Есть ли другая функция таблицы, которая предоставляет параметр добавления суммы строки?

Ответ 1

После этого вы можете использовать cbind и rowSums:

tab <- table(df$Company,df$Marital)
tab <- cbind(tab, Total = rowSums(tab))

Вы также можете использовать встроенную функцию addmargins:

tab <- addmargins(table(df$Company,df$Marital), 2)

(2 означает добавить столбец суммы, но не строку суммы - вы можете опустить его, и вы получите оба).

Ответ 2

Вы можете использовать addmargins

x <- table(df$Company,df$Marital)
addmargins(x)         # option 1
ftable(addmargins(x)) # option 2

Ответ 3


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