R 从行中删除表

R 从行中删除表,r,R,我有一些保存调查结果的数据框。第一个框架列出了调查中每个问题的问题id(q_id): q_id 1 q1 2 q2 3 q3 第二个数据框保存每个受试者对其回答的每个问题的回答(res)。受试者可以跳过以下问题: s_id q_id res 1 1 q1 a 2 2 q1 b 3 1 q2 b 我要生成的是一个表,其中显示每个问题的答案,其中的列是问题ID,每行代表一个主题。在上述示例中,该表如下所示: q1 q2 q3 1

我有一些保存调查结果的数据框。第一个框架列出了调查中每个问题的问题id(q_id):

  q_id
1   q1
2   q2
3   q3
第二个数据框保存每个受试者对其回答的每个问题的回答(res)。受试者可以跳过以下问题:

  s_id q_id res
1    1   q1   a
2    2   q1   b
3    1   q2   b
我要生成的是一个表,其中显示每个问题的答案,其中的列是问题ID,每行代表一个主题。在上述示例中,该表如下所示:

  q1 q2  q3
1  a  b  NA
2  b  NA NA

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

假设您的问题data.frame是
DQ
,您的答案是
DT

您需要确保您的答案中的
q\u id
列具有所有可用级别

DT$q_id <- factor(as.character(DT$q_id), levels = levels(DQ$q_id))
>dat-dat-dat
s_id q_id res
1第一季a
2 q1 b
3 1 q2 b
4.1第一季度
5.1第2季度
6.1第三季度
>重塑(dat,timevar=“q_id”,idvar=“s_id”,direction=“wide”)
s_id res.q1 res.q2 res.q3
1 a b
2 b
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>
> dat <- read.table(text="  s_id q_id res
+ 1    1   q1   a
+ 2    2   q1   b
+ 3    1   q2   b", header =TRUE, stringsAsFactors=FALSE)

# Create a dummy entry for each question:

> dat<- rbind(dat, data.frame(s_id=1,q_id=qdat$q_id, res= NA))
> dat
  s_id q_id  res
1    1   q1    a
2    2   q1    b
3    1   q2    b
4    1   q1 <NA>
5    1   q2 <NA>
6    1   q3 <NA>
> reshape(dat,  timevar="q_id", idvar="s_id", direction ="wide")
  s_id res.q1 res.q2 res.q3
1    1      a      b   <NA>
2    2      b   <NA>   <NA>