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

时间:2015-01-30 22:05:43

标签: r dataframe

我正在尝试创建一个评估两个变量的表,如下所示:

  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的方法?感谢!!!

1 个答案:

答案 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)