我正在尝试创建一个评估两个变量的表,如下所示:
Diabetes No_Diabetes
1 0 12
2 5 234
3 7 182
4 3 57
通过使用表格(x),我可以为每个单独的列(在此示例中为糖尿病或No_Diabetes)获取这些频率:
表(数据$ bmi_cat [DIABETES == 0])
1 2 3 4
12 234 182 57
表(数据$ bmi_cat [DIABETES == 1])
2 3 4
5 7 3
但是因为在这个例子中1 = 0,当我尝试将两个表放入一个数据帧时,我收到一条错误消息,指出它们不能组合,因为它们的长度不同。
我屈服于使用for循环来创建上面的原始数据框,但是当“table”如此有效地执行此操作时,必须有一种比编写8个单独循环更简单的方法。有关如何组合这两个表的任何建议,可能是通过找到在第二个表中显示1 = 0的方法?感谢!!!
答案 0 :(得分:0)
原则上,您可以运行以下部分来获取您的表格:
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(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)