R 每月文字推文的绘图计数/频率
我已经将R连接到Twitter,正在使用R中的R 每月文字推文的绘图计数/频率,r,twitter,plot,count,R,Twitter,Plot,Count,我已经将R连接到Twitter,正在使用R中的searchTwitter功能进行抓取,并清理结果数据中的标点符号、小写字母等。现在我正在尝试执行以下操作: 统计自2015年1月至2015年7月底每月发布的带有“拍卖”字样的推文数量 在一个简单的条形图中绘制计数(x轴-月;y轴-tweet数) 我想把它用于转发、提及、回复和收藏 这就是我迄今为止所尝试的: #load the packages into R >library(twitteR) >library(plyr) >
searchTwitter
功能进行抓取,并清理结果数据中的标点符号、小写字母等。现在我正在尝试执行以下操作:
- 统计自2015年1月至2015年7月底每月发布的带有“拍卖”字样的推文数量
- 在一个简单的条形图中绘制计数(
;x轴-月
)y轴-tweet数
#load the packages into R
>library(twitteR)
>library(plyr)
>library(ggplot2)
# Register an application (API) at https://apps.twitter.com/
# Look up the API key and create a token – you need for both the key and the secret
# Assign the keys to variables and use the authorization
api_key <- “your API key from twitter”
api_secret <- “your Secret key from twitter”
access_token <- “you Access Token from twitter”
access_token_secret <- “you Access Token Secret key from twitter”
setup_twitter_oauth(api_key,api_secret,access_token,access_token_secret)
#将包加载到R
>图书馆(推特)
>图书馆(plyr)
>图书馆(GG2)
#在以下位置注册应用程序(API)https://apps.twitter.com/
#查找API密钥并创建令牌–您需要密钥和密钥
#将密钥分配给变量并使用授权
api_key由于您甚至没有提供我们可以处理的一小部分数据,我的回答可能很肤浅
library(stringi); library(dplyr); library(SciencesPo)
df <- data.frame(tweets = c("blah, blah, Blah, auction","blah, auction", "blah, blah", "this auction, blah", "today"), date=c('2015-07-01','2015-06-01','2015-05-01','2015-07-31','2015-05-01'))
> df
tweets date
1 blah, blah, Blah, auction 2015-07-01
2 blah, auction 2015-06-01
3 blah, blah 2015-05-01
4 this auction, blah 2015-07-31
5 today 2015-05-01
filter = "auction"
> df$n <- vapply(df$tweets, function(x) sum(stri_count_fixed(x, filter)), 1L)
> df
tweets date n
1 blah, blah, Blah, auction 2015-07-01 1
2 blah, auction 2015-06-01 1
3 blah, blah 2015-05-01 0
4 this auction, blah 2015-07-31 1
5 today 2015-05-01 0
瞧!另外,将其绘制为ggplot(df2,aes(x=month,y=freq))+geom\u line()+theme\u pub()
请发布您当前的代码,以及您为实现此目的而编写的代码。我添加了代码,感谢您的耐心!谢谢你的回答,尽管我的问题措辞很糟糕total noob alarm(我添加了代码!),但我发现我不能同时使用data.frame函数和searchTwitter函数;您建议我将twitter数据保存为csv,然后用它创建一个数据框,还是我可以使用df作为最适合您的方式。鉴于我没有完整的信息,我提供了一个解决方案,将您的数据作为一个数据框架。您可以这样转换数据,或者修改vapply语法,以便以列表的形式处理数据。这取决于你。
tweet.dataframe <- data.frame(searchTwitter("action", since = "2015-01-01", until = "2015-08-03", n=3000))
yultweets <- searchTwitter("#accessyul", n=1500)
y <- twListToDF(yultweets)
y$created <- as.POSIXct(format(y$created, tz="America/Montreal"))
yply <- ddply(y, .var = "screenName", .fun = function(x) {return(subset(x,
created %in% min(created), select = c(screenName,created)))})
yplytime <- arrange(yply,-desc(created))
y$screenName=factor(y$screenName, levels = yplytime$screenName)
ggplot(y) + geom_point(aes(x=created,y=screenName)) + ylab("Twitter username") + xlab("Time")
library(stringi); library(dplyr); library(SciencesPo)
df <- data.frame(tweets = c("blah, blah, Blah, auction","blah, auction", "blah, blah", "this auction, blah", "today"), date=c('2015-07-01','2015-06-01','2015-05-01','2015-07-31','2015-05-01'))
> df
tweets date
1 blah, blah, Blah, auction 2015-07-01
2 blah, auction 2015-06-01
3 blah, blah 2015-05-01
4 this auction, blah 2015-07-31
5 today 2015-05-01
filter = "auction"
> df$n <- vapply(df$tweets, function(x) sum(stri_count_fixed(x, filter)), 1L)
> df
tweets date n
1 blah, blah, Blah, auction 2015-07-01 1
2 blah, auction 2015-06-01 1
3 blah, blah 2015-05-01 0
4 this auction, blah 2015-07-31 1
5 today 2015-05-01 0
df %>% group_by(month=format(as.Date(date),format="%m")) %>% summarize(freq=sum(n))
%>%ungroup() -> df2
> df2
Source: local data frame [3 x 2]
month freq
1 05 0
2 06 1
3 07 2
>