将数据框的结构从垂直方式更改为水平方式

我有一个数据框(db),如下所示:

学生ID / DESCRIPTION / TERM / ACH / MID / FINAL

STUDENT_ID是学生编号

DESCRIPTION是主题名称

TERM是学生学习该主题的术语

ACH是该学科成就的标志

MID是该科目的期中成绩

FINAL是该主题的决赛标记

我要创建一个具有以下新结构的新数据框

Empty dataframe created(d)

所以我想用(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]
        }
    }
}
clshz2009 回答:将数据框的结构从垂直方式更改为水平方式

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3152730.html

大家都在问