我有一个大的数据框(又称“ all_data”),这些单词以阿拉伯语音频的形式呈现给参与者,然后参与者必须从四个选项中进行选择,他们认为该单词的含义是英语。他们的选择记录在选择栏中,正确的答案应该在另外一个答案中:
[无论如何,我想在此“ all_data” df中添加一列,以显示其最频繁的响应,即使这不是目标词,但我也不知道该怎么做。因此,继续前进,我至少希望对其进行可视化,因此我创建了条形图,这样我就可以分别检查100个单词中的每个单词,以查看人们认为这个单词听起来是什么样子-因此,我过滤了有问题的单词(对每个我知道100个单词很乏味),然后将x轴设置为“选择”列,如下面的代码所示:
ggplot(filter(all_data, Correct == "Stormy"), aes((Choice))) + geom_bar()
这会导致您在我显示的打印屏幕右下角看到的条形图。
我尝试了几件事来按频率顺序重新排列x轴,但没有任何效果!我已经搜索了所有与该问题类似的所有其他线程,但是它们都具有y轴以用于重新排序,而我没有这些轴,因此我总是会出错。
我知道从技术上讲,没有定义y轴,因此R会在x轴上创建自己的单词“计数”,但我似乎无法弄清楚如何在y中获得该计数的名称。如您在我上述多次尝试中所见。
无论如何,我只是以常规方式查看地块并做笔记,但是有什么人可以帮助解决我的任何问题吗?
非常感谢!
Ahsan
最简单的方法是手动计算频率,例如通过count
或group_by
+ summarise
并使用汇总df使用geom_col
而非geom_bar
进行绘图。然后,您可以通过例如简单地对Choice
重新排序。 forcats::fct_reorder
根据频率。使用一些随机样本数据来模拟您的数据集,请尝试以下操作:
library(ggplot2)
library(dplyr)
library(forcats)
set.seed(42)
all_data <- data.frame(
Choice = sample(c("Painful", "Shook", "Humilation"), 30, replace = TRUE),
Correct = sample(c("Stormy", "Truth"), 30, replace = TRUE)
)
# Unordered bar plot
#ggplot(filter(all_data, Correct == "Stormy"), aes((Choice))) + geom_bar()
# Ordered bar plot
all_data %>%
filter(Correct == "Stormy") %>%
count(Choice) %>%
ggplot(aes(forcats::fct_reorder(Choice, desc(n)), n)) +
geom_col()
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9yNzBuVXlFLnBuZyJ9” alt =“”>
由reprex package(v0.3.0)在2020-04-07创建