2014-12-15 4 views
0

Я сделал некоторые для забавного твиттера. Я использовал twitters streaming-APi и записывал твиты раньше, а также после футбольного матча. Теперь я хочу сделать ggplot2-graph, который показывает частоту твитов на футбольном матче.Как заполнить твиты за минуту

В оригинальной dataframe i've одной строки на твите и переменный «created_at», который содержит дату, как это: Sat Dec 13 13:04:34 +0000 2014

Затем я изменил временный формат, как этот

чириканье $ формат < - as.POSIXct (твиты $ created_at, формат = "% A% B% d% H:% M:% S% г% У", TZ = "")

и получил это 2014-12-13 14:04:34 CET. Потому что Я не нужна дата, я думал, я мог бы избавиться от него

твиты $ Uhrzeit < - ("*", "", чирикает $ формат) суб

С это у меня осталось только время 14:04:34.

Моя проблема в том, что я хочу проанализировать твитовую частоту с точностью до твитов в минуту. Как объединить твиты в минуту? Как я сказал ранее, каждая строка - это твит. Я создал фреймворк с указанием времени и второй переменной, содержащей «1». Теперь я хочу подсчитать (суммировать, суммировать) вторую переменную за каждую минуту. Я попытался найти решение, прочитать о библиотеке зоопарков и хронологической библиотеке, но это оставило меня в замешательстве.

Надеюсь, кто-то может мне помочь.


EDIT: Воспроизводимость данных dataframe является подмножеством этого: имена (твиты)

[1] "X"       "text"      "retweet_count"    
[4] "favorited"     "truncated"     "id_str"     
[7] "in_reply_to_screen_name" "source"     "retweeted"     
[10] "created_at"    "in_reply_to_status_id_str" "in_reply_to_user_id_str" 
[13] "lang"      "listed_count"    "verified"     
[16] "location"     "user_id_str"    "description"    
[19] "geo_enabled"    "user_created_at"   "statuses_count"   
[22] "followers_count"   "favourites_count"   "protected"     
[25] "user_url"     "name"      "time_zone"     
[28] "user_lang"     "utc_offset"    "friends_count"    
[31] "screen_name"    "country_code"    "country"     
[34] "place_type"    "full_name"     "place_name"    
[37] "place_id"     "place_lat"     "place_lon"     
[40] "lat"      "lon"      "expanded_url"    
[43] "url"      "timeformat" 

Я преобразовали "created_at" переменную в "TimeFormat" переменной, которая выглядит следующим образом:

tweets.df<-as.data.frame(cbind(c("2014-12-13 14:04:34 CET","2014-12-13 14:04:37 CET","2014-12-13 14:04:45 CET","2014-12-13 14:05:23 CET","2014-12-13 14:05:53 CET","2014-12-13 14:05:58 CET","2014-12-13 14:06:33 CET","2014-12-13 14:06:38 CET","2014-12-13 14:06:59 CET","2014-12-13 14:08:16 CET","2014-12-13 14:09:12 CET","2014-12-13 14:09:34 CET","2014-12-13 14:10:05 CET","2014-12-13 14:10:16 CET","2014-12-13 14:10:17 CET","2014-12-13 14:11:13 CET","2014-12-13 14:11:16 CET","2014-12-13 14:12:01 CET","2014-12-13 14:12:30 CET","2014-12-13 14:14:02 CET","2014-12-13 14:14:02 CET","2014-12-13 14:14:02 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:05 CET","2014-12-13 14:14:05 CET","2014-12-13 14:14:07 CET","2014-12-13 14:14:07 CET","2014-12-13 14:14:08 CET","2014-12-13 14:14:08 CET","2014-12-13 14:14:08 CET","2014-12-13 14:14:08 CET","2014-12-13 14:14:11 CET","2014-12-13 14:14:11 CET","2014-12-13 14:14:22 CET","2014-12-13 14:14:48 CET","2014-12-13 14:15:02 CET","2014-12-13 14:15:03 CET","2014-12-13 14:16:20 CET","2014-12-13 14:16:26 CET","2014-12-13 14:17:14 CET","2014-12-13 14:17:24 CET","2014-12-13 14:17:45 CET","2014-12-13 14:17:49 CET","2014-12-13 14:18:05 CET","2014-12-13 14:18:30 CET","2014-12-13 14:19:38 CET"),1)) 
colnames(tweets.df)<-c("time","freq") 

Я только что построил данные. stat = "bin", который по умолчанию помещает ячейки в 1/30 диапазона данных. Было бы лучше иметь его в минуту.

ggplot(tweets,aes(x=timeformat)) + geom_line(stat="bin")

enter image description here

+4

Это было бы легче ответить, если вы сделали [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) с образцом ввода. – MrFlick

+1

У меня есть решение, но я хотел бы иметь пример dataframe с выходом, который вы ожидаете, чтобы убедиться, что мы на одном треке. В качестве намека моя идея - использовать 'dplyr' и' POSIXlt', которые предоставят вам доступ к '$ hour' (проще, чем просто gsub it), и используйте' dplyr' 'group_by' и' summaryize' – zipp

+1

Звучит как задание для 'table()', но трудно сказать без данных образца. – voidHead

ответ

2

Учитывая ваш пример набора данных:

tweets.df<-as.data.frame(cbind(c("2014-12-13 14:04:34 CET","2014-12-13 14:04:37 CET","2014-12-13 14:04:45 CET","2014-12-13 14:05:23 CET","2014-12-13 14:05:53 CET","2014-12-13 14:05:58 CET","2014-12-13 14:06:33 CET","2014-12-13 14:06:38 CET","2014-12-13 14:06:59 CET","2014-12-13 14:08:16 CET","2014-12-13 14:09:12 CET","2014-12-13 14:09:34 CET","2014-12-13 14:10:05 CET","2014-12-13 14:10:16 CET","2014-12-13 14:10:17 CET","2014-12-13 14:11:13 CET","2014-12-13 14:11:16 CET","2014-12-13 14:12:01 CET","2014-12-13 14:12:30 CET","2014-12-13 14:14:02 CET","2014-12-13 14:14:02 CET","2014-12-13 14:14:02 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:03 CET","2014-12-13 14:14:05 CET","2014-12-13 14:14:05 CET","2014-12-13 14:14:07 CET","2014-12-13 14:14:07 CET","2014-12-13 14:14:08 CET","2014-12-13 14:14:08 CET","2014-12-13 14:14:08 CET","2014-12-13 14:14:08 CET","2014-12-13 14:14:11 CET","2014-12-13 14:14:11 CET","2014-12-13 14:14:22 CET","2014-12-13 14:14:48 CET","2014-12-13 14:15:02 CET","2014-12-13 14:15:03 CET","2014-12-13 14:16:20 CET","2014-12-13 14:16:26 CET","2014-12-13 14:17:14 CET","2014-12-13 14:17:24 CET","2014-12-13 14:17:45 CET","2014-12-13 14:17:49 CET","2014-12-13 14:18:05 CET","2014-12-13 14:18:30 CET","2014-12-13 14:19:38 CET"),1), stringsAsFactors=FALSE) 
colnames(tweets.df)<-c("time","freq") 

Во-первых, ваше время столбца как он стоит содержит текстовую строку, вы хотите POSIXct объекты:

tweets.df$time <- as.POSIXct(tweets.df$time) 

Затем, биннинг на минутку эс осуществляется с помощью функции cut.POSIXt:

by.mins <- cut.POSIXt(tweets.df$time,"mins") 

Затем вы хотите разделить свой dataframe, используя это, и просуммировать столбец freq на подмножества:

tweets.mins <- split(tweets.df, by.mins) 
sapply(tweets.mins,function(x)sum(as.integer(x$freq))) 
2014-12-13 14:04:00 2014-12-13 14:05:00 2014-12-13 14:06:00 2014-12-13 14:07:00 2014-12-13 14:08:00 
        3     3     3     0     1 
2014-12-13 14:09:00 2014-12-13 14:10:00 2014-12-13 14:11:00 2014-12-13 14:12:00 2014-12-13 14:13:00 
        2     3     2     2     0 
2014-12-13 14:14:00 2014-12-13 14:15:00 2014-12-13 14:16:00 2014-12-13 14:17:00 2014-12-13 14:18:00 
       20     2     2     4     2 
2014-12-13 14:19:00 
        1 

В этом случае, так как freq всегда равна 1, это эквивалентно использованию table(by.mins).

Смежные вопросы