【问题标题】:How to make contingency table over a list in r如何在r中的列表上制作列联表
【发布时间】:2018-04-28 09:47:07
【问题描述】:

主要曝光变量是aff。我想获得affvarlist 中的所有变量的列联表。然后我想使用这些列联表进行卡方检验。我的代码如下:

name=names(data)
varlist=name[11:40]
models=lapply(varlist, function(x) {
          chisq.test(table(substitute(data$i,list(i = as.name(x))),data$aff))
 })
lapply(models, summary)

但我得到了错误

Error in unique.default(x, nmax = nmax) : 
  unique() applies only to vectors

如何解决这个问题?

【问题讨论】:

  • 也许this 有用?
  • dput(data) 的输出粘贴到您的问题中。在您的问题的当前状态下,我们无法重现您的问题。
  • 好的,当然,如果你想保留中间表。这是否意味着我的回答解决了你的问题?如果是,请“接受”答案。

标签: r lapply chi-squared


【解决方案1】:

我认为您使用 substitute 等使事情变得过于复杂。如果没有您的数据,我将尝试使用mtcars,使用cyl 作为曝光变量。

data <- mtcars
name <- names(data)
ev <- "cyl"
varlist <- name[ name != ev ]
models <- lapply(varlist, function(nm) {
  chisq.test(table(data[[nm]], data[[ev]]))
})
# Warning messages:
# 1: In chisq.test(table(data[[nm]], data[[ev]])) :
#   Chi-squared approximation may be incorrect

(因为我使用了一个不好的例子进行测试,所以这里有很多警告;使用mtcars时可以忽略,因为它确实不是这个测试的好数据集。)

summaries <- lapply(models, summary)
str(summaries[1:2])
# List of 2
#  $ : 'summaryDefault' chr [1:9, 1:3] " 1" " 1" " 1" " 1" ...
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : chr [1:9] "statistic" "parameter" "p.value" "method" ...
#   .. ..$ : chr [1:3] "Length" "Class" "Mode"
#  $ : 'summaryDefault' chr [1:9, 1:3] " 1" " 1" " 1" " 1" ...
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : chr [1:9] "statistic" "parameter" "p.value" "method" ...
#   .. ..$ : chr [1:3] "Length" "Class" "Mode"

【讨论】:

  • 感谢您的帮助。它非常有启发性,但我稍微修改了你的代码。 ------------------------------------- lapply(varlist, function(nm) { table(registry[ [nm]], registry[[ev]]) }) lapply(models,chisq.test)
【解决方案2】:

假设您的数据类似于mtcars,其中vsamgearcarb 是分类变量,您可以这样创建函数:

df_list_f <- function(x) chisq.test(table(df2$cyl, x))
df2 <- mtcars[,8:11] # df2 contains the columns vs, am, gear and carb
lapply(df2, df_list_f)

【讨论】:

  • 感谢您的帮助。但是我无法遵循您的代码。 x是什么? df2$cyl?
  • df2 是您的datacyl 是您的 aff。我只是在演示一个您可以复制的过程。提供您的数据,我们可以为它定制这个解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-05-09
  • 2019-09-27
  • 2016-03-03
  • 2021-11-29
  • 2016-01-18
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
相关资源
最近更新 更多