我正在做一个研究项目,其中一张表格的输入方式还不太适合进行分析,因此我正在尝试重新组织它。目前,每一行都是一个测试者,每一列都是他们回答错误的问题,按升序输入。因此,对于第一行,条目可能会读取“Q1”“Q3”“Q9”等,对应于第一、二、三列。总共有25个问题。
我的目标是重新组织数据,使每个问题都有一个列。如果测试者回答了问题,则相应列的条目为1,否则为0。
有一种暴力方法似乎可以解决问题。可以单独变换每一列,并检查每个值的每一列。然而,有25个问题,所有这些打字似乎极其低效,所以我怀疑肯定有更好的方法。
暴力代码如下:
期望的输出如下:
我的目标是重新组织数据,使每个问题都有一个列。如果测试者回答了问题,则相应列的条目为1,否则为0。
有一种暴力方法似乎可以解决问题。可以单独变换每一列,并检查每个值的每一列。然而,有25个问题,所有这些打字似乎极其低效,所以我怀疑肯定有更好的方法。
暴力代码如下:
df %>%
mutate(Q3 == ifelse(col1 == "Q3" | col2 == "Q3" | col3 == "Q3", 0, 1))
这里,col1、col2、col3都是可能包含Q3的列,而Q3可能是测试者答错的问题。如果它们中的任何一个包含Q3,则我们输入0。否则,输入1。
当有25个问题时,代码会变得太长。
编辑:数据帧的示例如下。
sample <- "ID Col1 Col2 Col3 Col4
1 100 Q1
2 101 Q3 Q4
3 102 Q2 Q3 Q4
4 103
5 104 Q4
6 105 Q1 Q2 Q3 Q4 "
期望的输出如下:
sample <- "ID Q1 Q2 Q3 Q4
1 100 0 1 1 1
2 101 1 1 0 0
3 102 1 0 0 0
4 103 1 1 1 1
5 104 1 1 1 0
6 105 0 0 0 0 "