我正试图使用tables
包中的tabular
,使用三个变量将df
数据帧制成表格。结果的格式可以,但我不明白为什么这些值都等于1
,而不是使用values
变量(频率(。
library(tidyverse)
library(tables)
df <- tibble(UT = c(rep(1, 9), rep(2,9)),
sex = rep(c(rep('MF', 3), rep('M', 3), rep('F', 3)),2),
age = rep(c('a','b','c'), 6),
values = c(1:18))
df <- df %>%
mutate(across(c(UT, sex, age), as.factor))
tabular(UT ~ (age * sex), data=df)
#>
#> age
#> a b c
#> sex sex sex
#> UT F M MF F M MF F M MF
#> 1 1 1 1 1 1 1 1 1 1
#> 2 1 1 1 1 1 1 1 1 1
Created on 2022-09-22 with reprex v2.0.2
也许这有助于
tabular((values)*(sum) ~ (UT *age *sex), data = df)
-输出
UT
1 2
age age
a b c a b c
sex sex sex sex sex sex
F M MF F M MF F M MF F M MF F M MF F M MF
values sum 7 4 1 8 5 2 9 6 3 16 13 10 17 14 11 18 15 12
或在base R
和xtabs
中
xtabs(values ~ ., df)
我找到了一个使用pivottabler
包的解决方案。
library(pivottabler)
qhpvt(df,"UT", c("age", "sex"), "sum(values)", totals="NONE")