【发布时间】:2014-11-27 19:14:41
【问题描述】:
我有一个直接来自文件的单词列表,每行一个,我使用 read.csv 导入,生成一个 data.frame。我需要做的是计算和绘制每个单词的出现次数。那,我可以轻松做到,但问题是我有几百个单词,其中大部分在列表中只出现一两次,所以我对它们不感兴趣。
编辑 https://gist.github.com/anonymous/404a321840936bf15dd2#file-wordlist-csv 这是一个示例单词表,您可以使用它来尝试。它与我使用的不同,我不能分享它,因为它是来自实际实验的实际数据,我不允许分享它。出于所有意图和目的,此列表具有可比性。
一个“简单”
df <- data.frame(table(words$word))
df[df$Freq > 2, ]
成功了,我现在有一个出现两次以上的单词列表,以及为什么我必须从一个 data.frame 转到一个数组并返回一个 data.frame 只是一个令人头疼的问题要做到这一点,更不用说我必须在实际选择字符串中重复 data.frame 的名称。完全打败我。
问题是现在过滤后的 data.frame 对图表毫无用处。假设这是我过滤后得到的
Var1 Freq
6 aspect 3
24 colour 7
41 differ 18
55 featur 7
58 function 19
81 look 4
82 make 3
85 mean 7
95 opposit 14
108 properti 3
109 purpos 6
112 relat 3
116 rhythm 4
118 shape 6
120 similar 5
123 sound 3
显然,如果我只是做一个
plot(df[df$Freq > 2, ])
我明白了
显然(显然?)在 x 轴上具有所有原始项,而 y 轴仅显示过滤后的值。所以下一个合乎逻辑的步骤是尝试强迫 R 的手
plot(x=df[df$Freq > 2, ]$Var1, y=df[df$Freq > 2, ]$Freq)
但显然 R 最了解并且已经这样做了,因为我得到了完全相同的结果。使用 ggplot2 会好一些
qplot(x=df[df$Freq > 2, ]$Var1, y=df[df$Freq > 2, ]$Freq)
(为了保持一致性)但我希望它显示一个实际的直方图,你知道,有条形图,就像他们在六年级教的那样,所以如果我问这个
qplot(x=df[df$Freq > 2, ]$Var1, y=df[df$Freq > 2, ]$Freq) + geom_bar()
我明白了
Error : Mapping a variable to y and also using stat="bin".
With stat="bin", it will attempt to set the y value to the count of cases in each group.
This can result in unexpected behavior and will not be allowed in a future version of ggplot2.
If you want y to represent counts of cases, use stat="bin" and don't map a variable to y.
If you want y to represent values in the data, use stat="identity".
See ?geom_bar for examples. (Defunct; last used in version 0.9.2)
那么让我们试试最后一个建议,好吗?
qplot(df[df$Freq > 2, ]$Var1, stat='identity') + geom_bar()
还好,不过有我的吧?所以,回到基础
qplot(words$word) + geom_bar() # even if geom_bar() is probably unnecessary this time
给我这个
我是疯了还是[用一长串关于 R 的漫无边际的抱怨和抱怨来代替]?
【问题讨论】:
-
如果包含reproducible example 这样我们就可以重现情节并且咆哮并没有真正的帮助。您的话可能已被编码为因素。当您对因子进行子集化时,它们会记住所有级别(这通常是所需的行为),但如果您想忘记子集中未包含的那些,您可以使用
droplevels()。所以我猜plot(droplevels(df[df$Freq > 2, ]))会起作用,但没有办法在你的数据上测试它。 -
承认咆哮没有帮助。我没有包括一个完整的例子,因为我解释了我是如何得到它的:“我有一个直接来自文件的单词列表,每行一个,我用 read.csv 导入它会产生一个 data.frame”。我正在使用示例词汇表编辑问题。