使用 R 或 python 将 csv 转换为频率多边形

csv to frequency polygon using R or python

我有一个 result.csv 文件,其中包含以下格式的信息: 日期,推文

2015-06-15,tweet
2015-06-15,tweet
2015-06-12,tweet
2015-06-11,tweet
2015-06-11,tweet
2015-06-11,tweet
2015-06-08,tweet
2015-06-08,tweet

我想绘制一个频率多边形,其中对应于每个日期的条目数作为 y 轴,日期作为 x 轴

我试过下面的代码:

pf<-read.csv("result.csv")
library(ggplot2)
qplot(datetime, data =pf, geom = "freqpoly")

但它显示以下错误: geom_path:每组仅包含一个观察值。需要调整群体审美吗?

谁能告诉我如何解决这个问题。我是 R 的新手,所以任何形式的指导都会对我有很大帮助

您的问题是您试图将日期时间视为连续的,但它是作为一个因子导入的 (discrete/categorical)。让我们将它转​​换为一个 Date 对象,然后事情应该会起作用:

pf$datetime = as.Date(pf$datetime)
qplot(datetime, data =pf, geom = "freqpoly")

根据您的代码,我假设 result.csv 有一个 header:datetime, atweet。默认情况下,read.csv 将 CSV 文件的第一行作为列名。这意味着您将能够使用 pf$datetimepf$atweet.

访问这两列

如果你查看read.csv的文档,你会发现stringsAsFactors = default.stringsAsFactors(),也就是FALSE。也就是说,CSV 文件中的字符串保存为 factors.

现在,即使您更改 stringsAsFactors 的值,您仍然会遇到相同的错误。那是因为 ggplot 不知道如何排序日期,因为它不识别字符串本身。 要将字符串转换为逻辑日期,您可以使用 strptime.

这是工作示例:

pf<-read.csv("result.csv", stringsAsFactors=FALSE)
library(ggplot2)

qplot(strptime(pf$datetime, "%Y-%m-%d"), data=pf, geom='freqpoly')