当一个变量=0时,如何在R中创建多列table?

How can I make a multicolumn table in R when one variable=0?

我正在尝试制作一个 table 来评估两个变量,如下所示:

  Diabetes No_Diabetes
1        0          12
2        5         234
3        7         182
4        3          57

通过使用 table(x),我可以获得每个列的这些频率(在本例中,糖尿病或 No_Diabetes):

table(data$bmi_cat[DIABETES==0])

  1   2   3   4 
 12 234 182  57 

table(data$bmi_cat[DIABETES==1])

2 3 4 
5 7 3 

但是因为在这个例子中 1 = 0,当我试图将两个 table 放入一个数据帧时,我收到一条错误消息,指出它们不能合并,因为它们的长度不同。

我屈服于使用 for 循环来制作上面的原始数据框,但是当 "table" 如此有效地做到这一点时,必须有一种比编写 8 个单独的循环更简单的方法。关于如何组合两个 table 的任何建议,也许是通过找到在第二个 table 中显示 1 = 0 的方法?谢谢!!!

原则上,您只需 运行 以下内容即可获得您的 table:

table(data$bmi_cat,DIABETES)

虽然没有数据很难求解,但DIABETES似乎是一个二元向量。 所以这里是尝试从你分享的内容中逆向工程问题:

temp <- read.table(text="Diabetes No_Diabetes
0          12
5         234
7         182
3          57",header=TRUE)

temp

所以让我们创建您正在使用的两个变量。

bmi_cat <- rep(1:4,apply(temp,1,sum))

DIABETES <- rep(rep(c(0,1),4),c(t(temp)))

让我们重新生成您拥有的 table:

table(bmi_cat[DIABETES==0])
table(bmi_cat[DIABETES==1])

看来我们已经适当地设置了data,现在让我们将它组合成一个data.frame,然后运行 table:

data <- data.frame(bmi_cat,DIABETES)
table(data)

实际上你在这里不需要数据框,只需以下即可:

table(bmi_cat,DIABETES)