如何在R中制作三向频率表?
我试图在R中编写一个三向频率表,但由于变量的数量太多,我遇到了麻烦。我有4列变量,抑郁(是,否,NA-我需要保持NAs),低于(是,否,NA),正常(是,否,NA)和肥胖(是,否,NA)。我想让桌子看起来像这样如何在R中制作三向频率表?,r,frequency,crosstab,R,Frequency,Crosstab,我试图在R中编写一个三向频率表,但由于变量的数量太多,我遇到了麻烦。我有4列变量,抑郁(是,否,NA-我需要保持NAs),低于(是,否,NA),正常(是,否,NA)和肥胖(是,否,NA)。我想让桌子看起来像这样 Depression Yes No NA Weight Under 70 20 5 Normal 90 68
Depression
Yes No NA
Weight
Under 70 20 5
Normal 90 68 8
Obese 40 20 6
我试过做交叉表,但它会给我一个表格,癌症被列为一个城市:(我真的很感谢任何帮助,在先进的
顺便说一下,我试过表包中的表格,但是当我生成标记时它给了我一个错误正则的
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
#
# . . .
模拟数据:
n似乎您想要的不是一个三向表,而是一个每个变量有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
matrix1您可能需要ftable
即ftable(df1[c(“Col1”、“Col2”、“Col3”))
看起来您的输出实际上不是一个三向表,而是一个由派生变量组成的双向表。您需要自己创建Weight
和Depression
列,然后您只需在这两个列上运行table
。您可以将Weight
创建为c('Under'、'Normal'、'obesty'))[在+2*正常+3*观察下]
@akrun这给了我一些不同的东西。