如何基于纵向数据抽样结果拆分R语言学生考试数据集?
解决方案
可以通过关联数据集+条件过滤的方式简洁实现需求,无需复杂的JOIN组合,具体步骤如下:
步骤1:关联原数据集与抽样学生的最大考试次数
先将原数据集my_data和抽样得到的max_value通过student_id关联,为每个学生的每一行数据添加上对应的最大考试次数:
# 仅保留抽样到的学生数据,用inner_join更精准 combined_data <- my_data %>% inner_join(max_value, by = "student_id")
步骤2:拆分出两个目标数据集
基于关联后的数据集,直接通过过滤条件拆分:
data_after:筛选exam_number大于对应最大考试次数的行data_before:筛选exam_number小于等于对应最大考试次数的行
# 创建data_after data_after <- combined_data %>% filter(exam_number > max) %>% select(-max) # 移除临时添加的max列 # 创建data_before data_before <- combined_data %>% filter(exam_number <= max) %>% select(-max)
补充说明
- 使用
inner_join而非left_join是为了确保只处理抽样到的学生,避免原数据中未被抽样的学生混入结果 - 如果抽样得到的
max是该学生在random_sample中的最大考试次数(而非原数据集的全局最大),上述代码依然能准确匹配条件拆分数据
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

