在 R 中单独进行共轭表
Separate conduction of conjugacy tables in R
在我的数据集中有 7 个二进制(分类)变量 (x1-x7.)
另一个变量是比例,我们不会使用它。
mydat
(部分)
structure(list(city = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L), .Label = c("New-York", "Washington"), class = "factor"),
x1 = c(0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), x2 = c(0L,
0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), x3 = c(0L, 0L, 1L, 1L,
0L, 0L, 0L, 1L, 1L, 0L), x4 = c(0L, 0L, 1L, 1L, 0L, 0L, 0L,
1L, 1L, 0L), x5 = c(0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L
), x6 = c(0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), x7 = c(0L,
0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), var1 = c(10L, 71L, 49L,
70L, 79L, 46L, 87L, 57L, 81L, 68L), var2 = c(34L, 17L, 28L,
63L, 95L, 99L, 40L, 63L, 24L, 90L), var3 = c(21L, 89L, 81L,
26L, 59L, 87L, 84L, 24L, 27L, 83L), var4 = c(86L, 70L, 45L,
40L, 95L, 94L, 39L, 97L, 89L, 30L)), .Names = c("city", "x1",
"x2", "x3", "x4", "x5", "x6", "x7", "var1", "var2", "var3", "var4"
), class = "data.frame", row.names = c(NA, -10L))
我创建了在所有二进制变量之间执行交叉表的函数。
也许它对任何人都有用。
有效。
mydat=read.csv(mydat)
library("gmodels")
mult_crosstab <- function (data = cross) {
for (j in 1:(ncol(data)-1)) {
for (i in (j+1):(ncol(data))) {
x <- names(data)[j]
y <- names(data)[i]
call <- call("CrossTable", as.name(x), as.name(y), chisq = TRUE)
eval(call, data)
}
}
}
mult_crosstab()
但是在数据集 - mydat 中有变量城市(华盛顿和纽约)。
如何使用我的函数分别计算两个城市的交叉表?
按城市拆分您的数据,然后遍历每个拆分和运行您的函数
lapply(split(cross, cross$city), mult_crosstab)
CrossTable 似乎是一个讨厌的小函数,它打印到控制台而不是返回一个对象。如果您愿意,可以使用 capture.output(code_above)
将输出捕获为文本。
在我的数据集中有 7 个二进制(分类)变量 (x1-x7.)
另一个变量是比例,我们不会使用它。
mydat
(部分)
structure(list(city = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L), .Label = c("New-York", "Washington"), class = "factor"),
x1 = c(0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), x2 = c(0L,
0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), x3 = c(0L, 0L, 1L, 1L,
0L, 0L, 0L, 1L, 1L, 0L), x4 = c(0L, 0L, 1L, 1L, 0L, 0L, 0L,
1L, 1L, 0L), x5 = c(0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L
), x6 = c(0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), x7 = c(0L,
0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), var1 = c(10L, 71L, 49L,
70L, 79L, 46L, 87L, 57L, 81L, 68L), var2 = c(34L, 17L, 28L,
63L, 95L, 99L, 40L, 63L, 24L, 90L), var3 = c(21L, 89L, 81L,
26L, 59L, 87L, 84L, 24L, 27L, 83L), var4 = c(86L, 70L, 45L,
40L, 95L, 94L, 39L, 97L, 89L, 30L)), .Names = c("city", "x1",
"x2", "x3", "x4", "x5", "x6", "x7", "var1", "var2", "var3", "var4"
), class = "data.frame", row.names = c(NA, -10L))
我创建了在所有二进制变量之间执行交叉表的函数。 也许它对任何人都有用。 有效。
mydat=read.csv(mydat)
library("gmodels")
mult_crosstab <- function (data = cross) {
for (j in 1:(ncol(data)-1)) {
for (i in (j+1):(ncol(data))) {
x <- names(data)[j]
y <- names(data)[i]
call <- call("CrossTable", as.name(x), as.name(y), chisq = TRUE)
eval(call, data)
}
}
}
mult_crosstab()
但是在数据集 - mydat 中有变量城市(华盛顿和纽约)。 如何使用我的函数分别计算两个城市的交叉表?
按城市拆分您的数据,然后遍历每个拆分和运行您的函数
lapply(split(cross, cross$city), mult_crosstab)
CrossTable 似乎是一个讨厌的小函数,它打印到控制台而不是返回一个对象。如果您愿意,可以使用 capture.output(code_above)
将输出捕获为文本。