R 从行中删除表
我有一些保存调查结果的数据框。第一个框架列出了调查中每个问题的问题id(q_id):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
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>