我想迭代地创建一个频率表,其中包含一个单变量var1、Y或var2、Y和联合变量var1、var2、Y
R中的码只能分别制作单频表和联合频表。
c1 <- ftable(variable[[1]], data1[,3])
# Fund
#
# b 21
# c 206
# d 1127
c1 <- ftable(variable[[3]], data1[,3])
# x.2 a b c d
# x.1
# b 0 9 4 8
# c 0 116 51 39
# d 5 542 291 289#variable[[3]] is a joint variable of variable[[1]] and variable[[2]]
as.matrix(as.vector(t(c1)))
# [,1]
# [1,] 0
# [2,] 9
# [3,] 4
# [4,] 8
# [5,] 0
# [6,] 116
# [7,] 51
# [8,] 39
# [9,] 5
# [10,] 542
# [11,] 291
# [12,] 289
ftable(variable[[1]], variable[[2]], data1[,3])
# Fund
#
# b a 0
# b 9
# c 4
# d 8
# c a 0
# b 116
# c 51
# d 39
# d a 5
# b 542
# c 291
# d 289是否有一种方法可以同时生成频率表,但同时保留指定的属性?
发布于 2019-02-19 10:32:36
可以使用addmargins向表添加页边距(行和)。
例如:
data(mtcars)
addmargins(table(mtcars[c("cyl", "gear")]))
# gear
# cyl 3 4 5 Sum
# 4 1 8 2 11
# 6 2 4 1 7
# 8 12 0 2 14
# Sum 15 12 5 32
ftable(addmargins(table(mtcars[c("cyl", "gear", "carb")])))
# carb 1 2 3 4 6 8 Sum
# cyl gear
# 4 3 1 0 0 0 0 0 1
# 4 4 4 0 0 0 0 8
# 5 0 2 0 0 0 0 2
# Sum 5 6 0 0 0 0 11
# 6 3 2 0 0 0 0 0 2
# 4 0 0 0 4 0 0 4
# 5 0 0 0 0 1 0 1
# Sum 2 0 0 4 1 0 7
# 8 3 0 4 3 5 0 0 12
# 4 0 0 0 0 0 0 0
# 5 0 0 0 1 0 1 2
# Sum 0 4 3 6 0 1 14
# Sum 3 3 4 3 5 0 0 15
# 4 4 4 0 4 0 0 12
# 5 0 2 0 1 1 1 5
# Sum 7 10 3 10 1 1 32我首先使用table来创建表,因为addmargins需要table的输出,而不是ftable。对于三维表,我最终使用ftable将表格式化为更具可读性的格式。
生成所有可能的表
# Select columns interesting to use in table
dta <- mtcars[c("cyl", "vs", "am", "gear", "carb")]
# Generate all possible combinations of columns
combinations <- unlist(lapply(1:ncol(dta),
function(x) combn(1:ncol(dta), x, simplify = FALSE)), recursive = FALSE)
# For each combination calculate a table
tables <- lapply(combinations, function(cols) ftable(dta[cols]))https://stackoverflow.com/questions/54763712
复制相似问题