在 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) 将输出捕获为文本。