0

我需要分析调查数据以获取多问题变量的频率。我正在使用这个 R 包

我知道我需要使用“multi.split”函数来创建我将使用的变量。但我需要知道如何让它参考不在数据集中的答案,这意味着答案是原始问题的一部分,但在调查期间没有选择,因此应该以值 0 显示。

示例:我有以下可以接受的答案:

"red", "blue", "green" and "yellow" 

我的数据是(如示例中):

v <- c("red/blue","green","red/green","blue/red")

当我运行这个命令时:

multi.table(multi.split(v))

我得到以下结果:

        n     %multi
v.blue  2     50
v.red   3     75
v.green 2     50

但我想得到:

         n     %multi
v.blue   2     50
v.red    3     75
v.green  2     50
v.yellow 0      0

关于我该怎么做的任何想法?

4

1 回答 1

0

我以前从未使用过这个包,但我会试一试。

该函数multi-split()会生成一个 data.frame,因此如果您想在获取统计信息之前添加另一列,您可以执行以下操作:

v <- c("red/blue","green","red/green","blue/red")
a <- multi.split(v)
a$v.yellow <-  0
multi.table(a)


## > multi.table(a)
## n %multi
## v.blue   2     50
## v.red    3     75
## v.green  2     50
## v.yellow 0      0

更新 一个更通用的版本会是这样的。

1.wanted.data是您在输出中始终需要的列名字符。2. col.to.add 是不在 data.frame 中的列a。3. 然后将 0 分配给不存在的列。4. 最后对列进行排序,以便我们始终以相同的顺序排列它们。

library(questionr)
v <- c("red/blue","green","red/green","blue/red")
wanted_data <-  c("v.red","v.blue","v.green","v.yellow")

 a <- multi.split(v)
 col.to.add<- wanted_data[!(wanted_data%in% colnames(a) )]
 a[col.to.add] <- 0
 a[,order(colnames(a))]
 multi.table(a)

## > multi.table(a)
## n %multi
## v.blue   2     50
## v.red    3     75
## v.green  2     50
## v.yellow 0      0
于 2016-04-10T20:51:35.997 回答