簡體   English   中英

使用循環在 R 中創建多個交叉表

[英]Using loops to create multiple crosstables in R

我有一個包含一個主要分類結果變量和多個分類暴露變量的數據集。 我想為每個曝光變量生成一系列帶有卡方檢驗的單獨交叉表,我想知道是否有辦法使用循環來做到這一點。

這本質上是我要完成的工作的長版本:

    ctable(data$x1, data$y, chisq=T, useNA='no')
    ctable(data$x2, data$y, chisq=T, useNA='no')
    ctable(data$x3, data$y, chisq=T, useNA='no')

這是我第一次把它變成一個循環:

    for(i in c('x1', 'x2', 'x3')){
    ctables <- ctable(data[[i]], data$y, chisq=T, useNA='no')
    }
    ctables

運行它時我沒有收到任何錯誤,但它只返回最后一個變量名的 ctable(在本例中為 x3)。 我錯過了什么?

注意:我需要專門命名數據框(data$y 而不是只說 y),因為我正在使用包含多個數據框的大型 SQL 數據庫。

或者,您可以使用包{crosstable} ,它允許您要求幾個變量作為輸入。

以下是使用mtcars數據集的示例:

library(crosstable)
crosstable(mtcars2, c(am, gear, cyl), by=vs, total=TRUE, 
           test=TRUE, showNA='no', percent_digits=1) %>% 
  as_flextable()

交叉表

您可以改用lapply()

ctables <- lapply(c('x1', 'x2', 'x3'), function(i) {
  ctable(data[[i]], data$y, chisq=T, useNA='no', dnn =c(i,"y"))
})

** 使用dnn=c(i,"y")更新以在生成的ctable中指定顯式名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM