Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中制作三向频率表?_R_Frequency_Crosstab - Fatal编程技术网

如何在R中制作三向频率表?

如何在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

我试图在R中编写一个三向频率表,但由于变量的数量太多,我遇到了麻烦。我有4列变量,抑郁(是,否,NA-我需要保持NAs),低于(是,否,NA),正常(是,否,NA)和肥胖(是,否,NA)。我想让桌子看起来像这样

                      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这给了我一些不同的东西。