来自行的R表

noa*_*chr 2 r

我有一些数据框可以保存调查结果.第一帧列出了调查中每个问题的问题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)

生成这样一个表的最佳方法是什么?

mne*_*nel 5

假设您的问题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,并dcastdrop = 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)