我有一个表,其中每行代表一个学生在一门课程中的注册情况,与此类似,但要大得多:
| 学生|当然|
| --|--|
| 001 |PSYC101|
| 001 |CHEM102|
| 002 |PSYC101|
| 002 |公司简介|
| 002 |BIO101|
| 003 |BIO101|
| 003 |ENG201|
| 003 |HIND101|
| 003 |CHEM102|
| 004 |PSYC101|
| 004 |CHEM102|
| 004 |HIND101|
我想知道学生最常一起学习的课程组合。我从两门课程的组合开始,但也可能想看看三门课程的组合。
我完全不知道这个手术叫什么。
我发现了这个类似的例子,它使用了dplyr
包:https://stackoverflow.com/questions/61613192/r-how-to-find-the-most-frequent-combinations
然而,我不认为这正是我想要的。我想要所有可能的2门课程的组合,当一些学生已经采取了2门以上的课程。例如,对于学生3,他们将有以下内容:
- BIO101 & ENG201
- BIO 101和HIND 101
- BIO 101和CHEM 102
- ENG201 & HIND101
- ENG201 & CHEM102
- HIND 101和CHEM 102
然后,我会找到所有学生中最常见的组合。
4条答案
按热度按时间2w3rbyxf1#
我喜欢更形象的方法...
字符串
的数据
型
lsmepo6l2#
一个基本的R方法使用
combn
(选择2个元素)由学生创建每个特定学生的课程的所有组合,然后使用table
来查看这些对在整个人群中出现的频率。我将把合并后的代码放在下面,然后通过分解它来梳理出之后发生的事情,这样它就更可读/更容易理解了。
如果您想查看3个课程选项,请将
combn(x$Course, 2)
更改为combn(x$Course, 3)
以选择三个课程的组合。字符串
输出
型
首先,使用
split
将数据框(df
)分解为每个学生的列表,然后找到课程的组合,然后组合并粘贴在一起,然后制作一个表格:型
请注意,如果您希望将其放在数据框中,只需将表 Package 起来:
型
数据
型
8tntrjer3#
您可以筛选出行数少于感兴趣的
m
组合的学生,使用combn()
生成组合,然后进行转置和行排序,解包tibble,计算结果,然后降序排序。字符串
对于
n = 3
,您将获得:型
n9vozmp44#
combn
的另一种dplyr
方法:字符串