【发布时间】:2015-05-25 05:29:51
【问题描述】:
我是 R 新手,正在寻求帮助。我了解以下问题相当简单,并且已经寻找类似的问题。没有人给出我正在寻找的答案 - 任何帮助将不胜感激。
问题:
使用table() 函数为三个变量生成频率表,数据格式为:
Var1 Var2 Var3
1 0 1 0
2 0 1 0
3 1 1 1
4 0 0 1
其中,0 =“否”,1 =“是”
最终表格采用以下格式,并标有变量和值:
Var3
Yes No
Var1 Yes 1 0
No 1 2
Var2 Yes 1 2
No 1 0
到目前为止我所做的尝试:
使用以下代码,我可以生成一个 2 变量表,其中包含变量标签但不包含值(即否和是)。
table(data$Var1, data$Var3, dnn = c("Var1", "Var3"))
看起来像这样:
Var3
Var1 0 1
0 2 1
1 0 1
在尝试标记行和列值时(0 = 否和 1 = 是),我知道可以使用 row.names 和 responseName,但是以下尝试标记行名称会出现 all arguments must have the same length 错误。
> table(data$Var1, data$Var2, dnn = c("Var1", "Var2"), row.names = c("No", "Yes"))
我也尝试过使用ftable(),但是使用下面的代码生成的表格形状不正确,导致问题出现的频率不正确。标记行和列值的问题仍然存在。
> ftable(data$Var1, data$Var2, data$Var3, dnn = c("Var1", "Var2", "Var3"))
Var3 0 1
Var1 Var2
0 0 0 1
1 2 0
1 0 0 0
1 0 1
如果能帮助您使用table() 制作所需形状的表格,我们将不胜感激。
【问题讨论】:
-
首先将数据转换为因子以解决标签问题:
dat <- data.frame(lapply(dat, factor, levels=1:0, labels=c("Yes","No"))) -
谢谢,这非常有帮助,非常适合解决标签问题。