【问题标题】:How do i turn my frequency table into a dataframe to make a bar chart graph?如何将频率表转换为数据框以制作条形图?
【发布时间】:2021-03-30 01:19:27
【问题描述】:

我认为标题并没有真正的帮助,但是......我们走吧。
我有关于候选人推文的数据。它是一个数据框,其中一个名为“推文”的列(每一行我都有不同的推文)。我使用以下函数制作了频率表:

frequencytable <- candidate$Tweets %>%
  na.omit() %>%
  tolower() %>%
  strsplit(split = "[ .,!]") %>% # or strsplit(split = "\\W")
  unlist() %>%
  gsub('[.?:!,"\n"]', '', .) %>%
  table() %>%
  sort(decreasing = TRUE)

之后,我得到了这样的结果(一个大表,没有列名,其中行是不同的单词,它们对应的频率如下):

hello   bye  good money   red 
  567   321    22    61    98 

dput 格式:

frequencytable <-
c(hello = 567L, bye = 321L, good = 22L, money = 61L, red = 98L)

(想象数字在单词下方)等等(我认为我有大约 500 次出现)............

现在我想在一个简单的条形图中显示这些结果,但我很努力。
我尝试过类似的方法:

ggplot(data = candidate$Tweets) + 
  geom_bar(mapping = aes(x = frequencytable))

没用... 我做了一些研究,发现了一些技巧,例如:将其转换为数据框,然后继续使用 ggplot,但我真的卡住了。

【问题讨论】:

  • 也许可以试试stack()
  • 行是不是 “不同的词,其对应的频率低于”,你有的是一个命名向量。
  • 没有看到您的数据,很难提供准确的答案。但这里有一些建议。 ggplot,适用于数据帧而不是向量,因此首先将您的频率表转换为数据帧。另外,既然你们都准备好了频率计数,那么您想使用geom_col() 而不是geom_bar()。祝你好运。
  • @Dave2e 谢谢你,戴夫! geom_col 很合适!

标签: r string dataframe bar-chart frequency-table


【解决方案1】:

下面是三个从频率表开始的解决方案。

组成一个数据集。

set.seed(2020)
frequencytable <- table(sample(letters[1:4], 100, TRUE))

基础 R.

barplot(frequencytable)

现在,ggplot2 解决方案。先加载包。

library(ggplot2)

df1 <- as.data.frame(frequencytable)
ggplot(df1, aes(Var1, Freq)) + geom_col()

df2 <- stack(frequencytable)
ggplot(df2, aes(ind, values)) + geom_col()

【讨论】:

    猜你喜欢
    • 2014-03-31
    • 2018-01-24
    • 2021-09-22
    • 1970-01-01
    • 2021-07-19
    • 2018-05-23
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多