使用 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$datetime
和 pf$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')
我有一个 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$datetime
和 pf$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')