我是R的新手并寻求帮助.我理解以下问题相当简单,并寻找类似的问题.没有给出我正在寻找的答案 - 任何帮助将不胜感激.
问题:
使用table()三个变量的函数生成频率表,格式为:
Var1 Var2 Var3
1 0 1 0
2 0 1 0
3 1 1 1
4 0 0 1
Run Code Online (Sandbox Code Playgroud)
其中,0 ="否",1 ="是"
最终表格采用以下格式,变量和值标记为:
Var3
Yes No
Var1 Yes 1 0
No 1 2
Var2 Yes 1 2
No 1 0
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试了什么:
使用下面的代码,我能够生成一个2变量表,其中包含变量的标签,但不包含值(即No和Yes).
table(data$Var1, data$Var3, dnn = c("Var1", "Var3"))
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
Var3
Var1 0 1
0 2 1
1 0 1
Run Code Online (Sandbox Code Playgroud)
在尝试标记行和列值(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"))
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用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
Run Code Online (Sandbox Code Playgroud)
任何帮助table()用于生产所需形状的桌子都将非常感激.
你可以尝试tabular从library(tables)改变标签后@thelatemail作为显示
library(tables)
data[] <- lapply(data, factor, levels=1:0, labels=c('Yes', 'No'))
tabular(Var1+Var2~Var3, data=data)
# Var3
# Yes No
#Var1 Yes 1 0
# No 1 2
#Var2 Yes 1 2
# No 1 0
Run Code Online (Sandbox Code Playgroud)
data <- structure(list(Var1 = c(0L, 0L, 1L, 0L), Var2 = c(1L, 1L, 1L,
0L), Var3 = c(0L, 0L, 1L, 1L)), .Names = c("Var1", "Var2", "Var3"
), class = "data.frame", row.names = c("1", "2", "3", "4"))
Run Code Online (Sandbox Code Playgroud)
最简单的方法可能是使用该reshape2包。首先,您需要将数字信息转换为因子,以便它不会将其视为数字。
data$Var1 <- as.factor(data$Var1)
data$Var2 <- as.factor(data$Var2)
data$Var3 <- as.factor(data$Var3)
Run Code Online (Sandbox Code Playgroud)
然后您可以轻松地申请table(data)以获得您想要的信息。如果您确实想将其转换为您指定的格式,请将其拉取为 a data.frame,然后根据需要进行转换:
df <- as.data.frame(table(data))
library(reshape2)
dcast(df, Var1+Var2 ~ Var3)
Run Code Online (Sandbox Code Playgroud)
这是输出:
Var1 Var2 0 1
1 0 0 0 1
2 0 1 2 0
3 1 0 0 0
4 1 1 0 1
Run Code Online (Sandbox Code Playgroud)
编辑:一旦满足所有因素,您就可以ftable在数据框上使用:
> ftable(data)
Var3 0 1
Var1 Var2
0 0 0 1
1 2 0
1 0 0 0
1 0 1
Run Code Online (Sandbox Code Playgroud)