使用 R 分析 Twitter 数据
Analyzing Twitter data using R
我正在尝试使用 R 分析 Twitter 数据,方法是绘制一段时间内的推文数量,当我写
plot(tweet_df$created_at, tweet_df$text)
我收到此错误消息:
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
2: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf
5: In min(x) : no non-missing arguments to min; returning Inf
6: In max(x) : no non-missing arguments to max; returning -Inf
这是我使用的代码:
library("rjson")
json_file <- "tweet.json"
json_data <- fromJSON(file=json_file)
library("streamR")
tweet_df <- parseTweets(tweets=file)
#using the twitter data frame
tweet_df$created_at
tweet_df$text
plot(tweet_df$created_at, tweet_df$text)
您遇到了一些问题,但没有什么是无法克服的。如果您想随着时间的推移跟踪推文,您实际上是在请求每个 x 时间范围内创建的推文(每分钟、每秒等的推文)。所以这意味着您只需要 created_at
列,并且您可以使用 R 的 hist
函数构建图形。
如果你想按文本中提到的单词或其他任何内容进行拆分,那也是可行的,但你可能应该使用 ggplot2
来进行拆分,并且可能会问一个不同的问题。无论如何,它看起来像 parseTweets
将推特时间戳转换为字符字段,因此您需要将其转换为 R 可以理解的 POSIXct
时间戳字段。假设您有一个看起来像这样的数据框:
❥ head(tweet_df[,c("id_str","created_at")])
id_str created_at
1 597862782101561346 Mon May 11 20:36:09 +0000 2015
2 597862782097346560 Mon May 11 20:36:09 +0000 2015
3 597862782105694208 Mon May 11 20:36:09 +0000 2015
4 597862782105694210 Mon May 11 20:36:09 +0000 2015
5 597862782076198912 Mon May 11 20:36:09 +0000 2015
6 597862782114078720 Mon May 11 20:36:09 +0000 2015
你可以这样做:
❥ dated_tweets <- as.POSIXct(tweet_df$created_at, format = "%a %b %d %H:%M:%S +0000 %Y")
这将为您提供 R 的时间戳格式的日期推文向量。然后你可以像这样绘制它们。我将示例 Twitter 提要打开 15 分钟左右。这是结果:
❥ hist(dated_tweets, breaks ="secs", freq = TRUE)
我正在尝试使用 R 分析 Twitter 数据,方法是绘制一段时间内的推文数量,当我写
plot(tweet_df$created_at, tweet_df$text)
我收到此错误消息:
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
2: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf
5: In min(x) : no non-missing arguments to min; returning Inf
6: In max(x) : no non-missing arguments to max; returning -Inf
这是我使用的代码:
library("rjson")
json_file <- "tweet.json"
json_data <- fromJSON(file=json_file)
library("streamR")
tweet_df <- parseTweets(tweets=file)
#using the twitter data frame
tweet_df$created_at
tweet_df$text
plot(tweet_df$created_at, tweet_df$text)
您遇到了一些问题,但没有什么是无法克服的。如果您想随着时间的推移跟踪推文,您实际上是在请求每个 x 时间范围内创建的推文(每分钟、每秒等的推文)。所以这意味着您只需要 created_at
列,并且您可以使用 R 的 hist
函数构建图形。
如果你想按文本中提到的单词或其他任何内容进行拆分,那也是可行的,但你可能应该使用 ggplot2
来进行拆分,并且可能会问一个不同的问题。无论如何,它看起来像 parseTweets
将推特时间戳转换为字符字段,因此您需要将其转换为 R 可以理解的 POSIXct
时间戳字段。假设您有一个看起来像这样的数据框:
❥ head(tweet_df[,c("id_str","created_at")])
id_str created_at
1 597862782101561346 Mon May 11 20:36:09 +0000 2015
2 597862782097346560 Mon May 11 20:36:09 +0000 2015
3 597862782105694208 Mon May 11 20:36:09 +0000 2015
4 597862782105694210 Mon May 11 20:36:09 +0000 2015
5 597862782076198912 Mon May 11 20:36:09 +0000 2015
6 597862782114078720 Mon May 11 20:36:09 +0000 2015
你可以这样做:
❥ dated_tweets <- as.POSIXct(tweet_df$created_at, format = "%a %b %d %H:%M:%S +0000 %Y")
这将为您提供 R 的时间戳格式的日期推文向量。然后你可以像这样绘制它们。我将示例 Twitter 提要打开 15 分钟左右。这是结果:
❥ hist(dated_tweets, breaks ="secs", freq = TRUE)