数据结构是:
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
你可以使用cbind和rowSums之后:
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)
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)
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() 所做的。
| 归档时间: |
|
| 查看次数: |
30774 次 |
| 最近记录: |