此问题已在此处有答案:
How to get the mode of a group in summarize in R(2个答案)
How to find the statistical mode?(35个回答)
4天前关闭。
我在找同一篇课文对应多个答案的模式。我有一个dataframe与2列,用户ID和他们的答案。我目前每个用户ID有多个条目用于他们的每个答案,我不知道如何将这些答案组合或分组在一起以找到模式或如何使用find_mode函数。它目前看起来像下表,用户ID在各行中有多个条目,并且没有按顺序排列。这个表的规模要小得多,因为我处理的是大约100个用户ID,答案在4-25之间(如果有区别的话,所有答案都在1-6之间)。我不知道如何创建一个reprex,所以我已经尽我所能,以显示你不使用截图!
DF当前显示为:
| UserID | Answer |
| -------- | -------- |
| ID1 | 2 |
| ID3 | 4 |
| ID1 | 5 |
| ID2 | 4 |
| ID2 | 1 |
| ID3 | 3 |
| ID1 | 3 |
| ID2 | 1 |
| ID3 | 4 |
字符串
我已经成功地完成了我想要的,使用均值函数,但显然我并不想找到均值,我想找到众数,但我不知道怎么做。下面是我用来求平均值的代码,希望它能帮助给予了解我的目标结果是什么-代码已经被修改,以便在这些示例表中有意义。
answers_mean <- aggregate(DF[, 3], list(UserID=DF$UserID), mean)
型
理想地,在找到模式之后,来自上面的表将看起来像这样。
| UserID | AnsMod |
| -------- | -------- |
| ID1 | 2 |
| ID2 | 1 |
| ID3 | 4 |
型
到目前为止,我认为我可能需要按用户ID对数据进行分组,并在summarise func find_mode下进行总结以找到模式(不确定如何做到这一点)或将数据更广泛地旋转,然后将每个用户ID列出一次,并在同一行上列出所有相应的答案,然后找到每行的模式(再次不确定如何做到这一点)任何帮助,例如代码或如何实现这一点的建议,将不胜感激!
2条答案
按热度按时间rsaldnfx1#
A模式函数
字符串
使用
aggregate
型
数据
型
ogq8wdun2#
使用
dplyr
函数通过UserID
获得Answer
计数,然后按ID取最高计数:字符串
输出量:
型
注意:使用
with_ties = TRUE
返回模态值的关系,就像这里的ID1一样。