簡體   English   中英

如何在R中做三向頻率表?

[英]How to do a three-way frequency table in R?

我正在嘗試在R 中編寫一個三向頻率表,但由於我擁有的變量數量太多,我遇到了困難。 我有 4 列變量,抑郁(是,否,NA-我需要保留 NA),低(是,否,NA),正常(是,否,NA)和肥胖(是,否,NA)。 我想讓桌子看起來像這樣?

                      Depression
                 Yes     No     NA
Weight      
Under            70      20     5


Normal           90      68     8


Obese            40      20     6

我試過做交叉表,但它會給我一張表格,其中癌症被列為城市之一:(我真的很感謝你的任何幫助!

順便說一句,我已經嘗試過 table 包中的 tabular,但是當我生成降價時它給了我一個錯誤

常規table函數可以做到。 考慮:

# Mock data:
n <- 100
mys <- function(x) sample(x, size = n, replace = TRUE)
A <- mys(letters[1:3])
B <- mys(LETTERS[1:4])
C <- mys(paste(1:5))

# Three way table:
table(A,B,C,  useNA = "always")
#, , C = 1
#
#      B
#A      A B C D <NA>
#  a    0 2 0 1    0
#  b    2 1 0 0    0
#  c    3 0 2 2    0
#  <NA> 0 0 0 0    0
#
#, , C = 2
#
 #     B
#A      A B C D <NA>
#  a    2 1 2 2    0
#  b    2 4 0 1    0
#  c    0 5 5 3    0
#  <NA> 0 0 0 0    0
#
# . . .

然后可以根據需要設置參數useNA ?table 之后,您可以根據需要對三向表進行子集/切片。

看起來您想要的不是三向表,而是每個變量有 3 個類別的雙向表。 我希望這段代碼有用:

matrix1 <- matrix(c(70, 20, 5, 90, 68, 8, 40, 20, 6))

tab <- as.table(matrix(matrix1, nrow = 3, byrow = T, 
                           dimnames = list(Weight = c('Under','Normal','Obese'), 
                                           Depression = c('Yes', 'No', 'NA'))))

tab

         Depression
 Weight   Yes No NA
 Under   70 20  5
 Normal  90 68  8
 Obese   40 20  6

這是一個雙向表問題。 由於其他人也可能會在這里結束,這里是三路表的簡單解決方案:

library(tidyverse)
data %>% select('x','y','z') %>% ftable()

暫無
暫無

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

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