我正在做一个研究项目,并且输入的表格中的一种还不太适合分析,因此我试图对其进行重组。当前,每一行都是考生,每一列都是他们错误回答的问题,以升序输入。因此,对于第一行,条目可以分别读取第一,第二和第三列的“ Q1”,“ Q3”,“ Q9”等。总共有25个问题。
我的目标是重组数据,以便每个问题都有一列。如果考生正确回答了该问题,则相应列的条目为1,否则为0。
有一种蛮力的方法似乎起作用。可以分别更改每列并检查每列中的每个值。但是,这里有25个问题,所有这些键入似乎效率都很低,所以我怀疑必须有更好的方法。
暴力代码如下所示:
df %>%
mutate(Q3 == ifelse(col1 == "Q3" | col2 == "Q3" | col3 == "Q3", 0, 1))
Run Code Online (Sandbox Code Playgroud)
在这里,col1,col2,col3都是可能包含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 "
Run Code Online (Sandbox Code Playgroud)
所需的输出如下:
sample <- "ID Q1 Q2 Q3 Q4
1 100 0 1 1 1
2 101 1 1 0 0
3 102 …Run Code Online (Sandbox Code Playgroud)