基于课程信息列去重,将项目相关列折叠为列表(R语言)
解决方法
用dplyr实现(直观易读)
通过分组后将项目列转为列表,既能去重课程行,又完整保留所有关联的项目信息:
library(dplyr) modified_df <- df %>% group_by(coursecode, coursename, courseurl) %>% summarise( programme_faculty = list(programme_faculty), programme_name = list(programme_name), programme_ects = list(programme_ects), .groups = "drop" )
运行后查看结果,列表列会以c("FSE", "FSE", "FSE")的形式显示,和你期望的格式一致。要查看某课程的具体项目信息,比如第一个课程的项目名称,直接用modified_df$programme_name[[1]]即可提取。
用data.table实现(大数据集更高效)
如果你的数据集规模很大,data.table的处理速度会更有优势:
library(data.table) setDT(df) modified_df <- df[, .( programme_faculty = list(programme_faculty), programme_name = list(programme_name), programme_ects = list(programme_ects) ), by = .(coursecode, coursename, courseurl)]
补充说明
你之前尝试的aggregate()函数默认会将分组结果简化为向量,无法直接生成列表列,所以不适合这个场景。上面两种方法生成的列表列,既能满足后续课程分析的去重需求,又能随时查询该课程关联的所有项目信息。
内容的提问来源于stack exchange,提问作者Mink
相关产品推荐
相关产品推荐

