如果X $ value> Y $ value是否可以将值从向量X复制到向量Y?

时间:2019-01-02 18:56:44

标签: r

我有一些大学生数据,包括学生ID号,课程代码,学生上课时的学期号以及他们在该课程中获得的最终成绩。我希望每个学生每学期结束后有1行。这意味着,如果StudentX在第1学期修了4门课程,而在第2学期修了4门不同的课程,那么StudentX的第1行将是一个包含在第1学期修读的4门课程的成绩的向量。 ,第一学期修了4门课程,第二学期修了4门课程,等等。

我尝试使用tidyr spread()来简单地从长格式转换为宽格式。但是,这导致第1行仅包含第1学期课程,第2行仅包含第2学期课程,依此类推。

以下是我使用的数据示例:

| id | semester_number | course_code | final_grade |

|  1  |  1  |  MATH1010 | 2.3 |

| 1 |  1 | PSYC1000 | 4.3 |

| 1 | 2 | MATH1020 | 3.3 |

| 1 | 2 | PSYC2000 | 3.7 |

| 1 | 3 | MATH2080 | 2.0 |

| 1 | 3 | STAT2800 | 2.3 |

| 2 | 1 | PHY1010 | 3.3 |

| 2 | 1 | MATH1010 | 4.3 |

| 2 | 2 | PHY1020 | 0 |

| 2 | 2 | MATH1020 | 2.0 |

    spread(distinct(df, id, course_code, semester_number, .keep_all = T), 
    course_code, final_grade, fill=0)

此代码使用Course_code作为列并将final_grade作为值将数据帧转换为宽格式,并按学期分隔(Row1 = semester1,Row2 = semester2,Row3 = semester3,等等)。

我希望Row1 = semester1,Row2 = semester1和semester2,Row3 = semester1和semester2和semester3,等等。可以将其视为第十个学期后学生学术生涯的快照。

是否可以通过id合并行(Row1 = Row1,Row2 = Row1 + Row2,Row3 = Row1 + Row2 + Row3等),或者在从长到宽转换之前可以做些什么?

0 个答案:

没有答案