我有一个数据框(db),如下所示:
学生ID / DESCRIPTION / TERM / ACH / MID / FINAL
STUDENT_ID是学生编号
DESCRIPTION是主题名称
TERM是学生学习该主题的术语
ACH是该学科成就的标志
MID是该科目的期中成绩
FINAL是该主题的决赛标记
我要创建一个具有以下新结构的新数据框
所以我想用(db)中的数据填充(d)
student_no =学生编号
期限=期限
ach_m = ACH(其中description =数学)
mid_m = MID(其中description =数学)
final_m = FINAL(其中description =数学)
依次类推....(db),(d)中不同术语的每一行
每学期只有一行充满所有主题标记。
每个学生学习了6个学期,因此总共有6条记录。
这是我尝试的代码。计算需要很长时间,结果需要处理成千上万行或更多行中相似的列值,但是好事是在正确的列中(student_id,term),并且可能开始填补一个主题,例如(((ach_m, mid_m,final_m)):
for (i in seq(1,nrow(db),1)) {
for (j in seq(1,nrow(d),1)) {
if (str_detect(db[i,2],"Arabic ") == TRUE) {
d[j,1] <- db[i,1]
d[j,2] <- db[i,3]
d[j,15] <- db[i,4]
d[j,16] <- db[i,5]
d[j,17] <- db[i,6]
}
if (str_detect(db[i,"English ") == TRUE) {
d[j,18] <- db[i,19] <- db[i,20] <- db[i,"Physics ") == TRUE) {
d[j,12] <- db[i,13] <- db[i,14] <- db[i,"Chemistry ") == TRUE) {
d[j,1] <- db[i,2] <- db[i,6] <- db[i,7] <- db[i,8] <- db[i,"Biology ") == TRUE) {
d[j,9] <- db[i,10] <- db[i,11] <- db[i,"Mathmatics.* ") == TRUE) {
d[j,3] <- db[i,4] <- db[i,5] <- db[i,6]
}
}
}