我有一个数据集,其中包含学生ID和专业名称沿着学期。主要的复杂因素是,如果学生返回到以前的专业,我希望它算作另一个专业
StudID Major Term
12345 History 202101
12345 History 202102
12345 Management 202201
12345 History 202202
预期结果
StudID Major Term MajorNumber
12345 History 202101 1
12345 History 202102 1
12345 Management 202201 2
12345 History 202202 3
我唯一尝试过的是拉入每个专业的最早学期,然后根据每个专业的最早学期在StudentID中进行排名,但这意味着最终的“历史”变成了1而不是3
4条答案
按热度按时间pqwbnv8z1#
data.table::rleid
函数就是这样做的,具体来说,它会给所有连续的相同值赋予相同的ID,并且每当有变化时都会递增。使用数据表,
或者使用
dplyr
:vohkndzv2#
在
base R
中,使用ave
+rle
7gcisfzg3#
下面是一个
dplyr
解决方案:mzaanser4#
这可能不是最好的方法,但我尝试了下面的代码
数据
编号
输出