[英]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.