我需要将某些列的值转换为特定行的行。
这是一个样本数据集:
df <- data.frame(
student_id = c(1,1,1,2,2,2),
question_id = c(10,11,12,20,21,22),
score = c(2,3,4,2,1,5),
A = c(NA,NA,1, NA,NA,1),
B = c(NA,NA,2, NA,NA,1),
C = c(NA,NA,1, NA,NA,3)
)
> df
student_id question_id score C E O
1 1 10 2 NA NA NA
2 1 11 3 NA NA NA
3 1 12 4 1 2 1
4 2 20 2 NA NA NA
5 2 21 1 NA NA NA
6 2 22 5 1 1 3
对于那些在A
,B
和C
列中有值的行,我需要将这些值抓取到分数列中,并添加后缀以定义question_id
。例如,第三行的分数是这三列(A、B、C)的总和。
我的期望输出如下。
> df
student_id question_id score
1 1 10 2
2 1 11 3
3 1 12_C 1
4 1 12_E 2
5 1 12_O 1
6 2 20 2
7 2 21 1
8 2 22_C 1
9 2 22_E 1
10 2 22_O 3