Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 当使用table函数时,如果我的某个因子缺少一个级别,如何将表格作为输出而不是列表?_R_Missing Data - Fatal编程技术网

R 当使用table函数时,如果我的某个因子缺少一个级别,如何将表格作为输出而不是列表?

R 当使用table函数时,如果我的某个因子缺少一个级别,如何将表格作为输出而不是列表?,r,missing-data,R,Missing Data,我正在处理一份调查问卷的结果,并希望在一张表格中给出几个相关的是/否问题的回答。对于其中一个问题,所有受访者均回答“否”。在这个问题中,由于缺少一个响应级别,R中的table函数返回一个列表而不是一个表 在回答为“是”的问题中添加因子级别的“是”并不能解决问题。顺便说一句,我下面给出的代码对于回答“是”或“否”的问题很有效 此代码涉及五位受访者回答的三个问题,并说明了我的问卷 q1 <- c("Yes", "Yes", "Yes", "Yes", "No") q2 <- c("No"

我正在处理一份调查问卷的结果,并希望在一张表格中给出几个相关的是/否问题的回答。对于其中一个问题,所有受访者均回答“否”。在这个问题中,由于缺少一个响应级别,R中的table函数返回一个列表而不是一个表

在回答为“是”的问题中添加因子级别的“是”并不能解决问题。顺便说一句,我下面给出的代码对于回答“是”或“否”的问题很有效

此代码涉及五位受访者回答的三个问题,并说明了我的问卷

q1 <- c("Yes", "Yes", "Yes", "Yes", "No")
q2 <- c("No", "No", "No", "No", "No") # our culprit
q3 <- c("Yes", "Yes", "No", "No", "No")
意识到因子q2只有一个层次,我写道:

q2 <- factor(q2, levels = c("Yes", "No"))

使用
dplyr
,您可以对每个分组进行计数,然后在展开时使用
fill=0
,以获得所需的表格

df%>%聚集(k,v)%>%
计数(k,v)%>%排列(k,n,填充=0)
#一个tibble:2x4
第1季度第2季度第3季度
1号1 5 3
2是4 0 2

我认为最好明确列出所有要测量的值的标签。然后你可以转换成因子并求和

vals <- c("Yes", "No")
df <- data.frame(q1, q2, q3)
sapply(lapply(df, factor, levels=vals), table)

vals如果您使用参数
stringsafactors=FALSE
创建df,那么您可以执行
table(stack(df))
。您还可以将应用更改为
lapply(df,table)
并获得Yesalso的0,以便为您提供参考
apply
将因子转换为字符,这就是出现上述问题的原因。运行这两个函数,看看输出是什么:
lappy(df,class)
apply(df,2,class)
感谢您向我指出apply函数将因子转换为字符。第一条评论中的解决方案返回@onyanbu建议的答案。
df <- data.frame(q1, q2, q3)
apply(df, 2, table)
$q1

 No Yes 
  1   4 

$q2

No 
 5 

$q3

 No Yes 
  3   2
vals <- c("Yes", "No")
df <- data.frame(q1, q2, q3)
sapply(lapply(df, factor, levels=vals), table)
table(stack(list(q1=q1,q2=q2,q3=q3)))

      ind
values q1 q2 q3
   No   1  5  3
   Yes  4  0  2