我有一些数据框可以保存调查结果.第一帧列出了调查中每个问题的问题ID(q_id):
q_id
1 q1
2 q2
3 q3
Run Code Online (Sandbox Code Playgroud)
第二个数据帧为每个主题(s_id)保存主题响应的每个问题的响应(res).主题可以跳过问题:
s_id q_id res
1 1 q1 a
2 2 q1 b
3 1 q2 b
Run Code Online (Sandbox Code Playgroud)
我想要生成的是一个表格,显示每个问题的答案,其中列是问题ID,每行代表一个主题.在上面的示例中,表格如下所示:
q1 q2 q3
1 a b NA
2 b NA NA
Run Code Online (Sandbox Code Playgroud)
生成这样一个表的最佳方法是什么?
假设您的问题data.frame DQ和您的答案DT
您需要确保q_id答案中的列具有所有可用级别
DT$q_id <- factor(as.character(DT$q_id), levels = levels(DQ$q_id))
Run Code Online (Sandbox Code Playgroud)
那么你可以使用reshape2,并dcast与drop = FALSE对,你想投
library(reshape2)
dcast(DT, s_id~q_id, value.var = 'res', drop = FALSE)
s_id q1 q2 q3
1 1 a b <NA>
2 2 b <NA> <NA>
Run Code Online (Sandbox Code Playgroud)