在 R 中处理调查多选数据
processing survey multi-choise data in R
我需要分析调查数据以获得多问题变量的频率。我正在使用 this R package
我知道我需要使用 '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
关于我该怎么做的任何想法?
我以前从未使用过这个包,但我会试一试。
函数 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 是不在 a
data.frame 中的列。
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
我需要分析调查数据以获得多问题变量的频率。我正在使用 this R package
我知道我需要使用 '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
关于我该怎么做的任何想法?
我以前从未使用过这个包,但我会试一试。
函数 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 是不在 a
data.frame 中的列。
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