2016-01-06 2 views
0

Я извлек данные из API facebook с помощью rfacebook. Я провел анализ настроений с помощью машины поддержки поддержки, классифицируя каждое сообщение как положительное, так и отрицательное.Как объединить непрерывные данные в ежедневные данные с помощью R

Данные у меня теперь выглядит

fromID fromName  Message  createdTime     SVM Label 

122233 Max Muster great game 2014-12-28T20:57:04+0000   1 
133425 Hilde Mash hate it! 2014-12-28T23:54:12+0000   2 
142233 Fred Ast  awesome  2014-12-29T22:37:08+0000   1 
139425 Fred Fein hate it! 2014-12-28T12:21:06+0000   2 

Я первый преобразовал столбец createdTime в XTS формате, применяя

df$createdTime = strptime(df$createdTime,format="%Y-%m-%dT%H:%M:%S%z")

Тогда я первый попробовать агрегировать количество комментариев в день с

number = apply.daily(df, sum) 

Однако, это видно ms не работает.

номер только состоит из NA.

Я пробовал несколько других вещей, но он не работает.

В лучшем случае я хотел бы иметь фрейм данных, который подсчитывает количество 1 и 2 ярлыков SVM, которые у меня есть в день. Однако я не уверен, как это сделать.

Любая помощь здесь была бы действительно оценена!

Благодарим вас за помощь!

ответ

0

Я не знаю XTS пакета, поэтому вместо этого я использовал формат POSIXct.

Предполагая, что ваш кадр данных называется "ДФ":

df$Time = as.POSIXct(df$createdTime, format = "%Y-%m-%dT%H:%M:%S+0000") 
library(dplyr) 
df2 = df %>% 
    mutate(Day = as.POSIXct(trunc.POSIXt(Time, units = "days"))) %>% 
    group_by(Day, SVMLabel) %>% 
    summarise(Count = n()) 

print(df2) 

Для приведенных выше данных, это дает мне:

Источник: местный кадр данных [3 х 3] группы: День [? ]

 Day  SVMLabel Count 
    (time)   (int) (int) 
1 2014-12-28  1  1 
2 2014-12-28  2  2 
3 2014-12-29  1  1 

Которая выглядит прямо на меня.

+0

Большое спасибо! Это также было очень полезно и отлично работает! – rkuebler

0

Использование dplyr, вы можете сделать это:

library(dplyr) 
df$Date <- as.Date(df$createdTime) 
summary_df <- df %>% group_by(Date) %>% summarise(class1 = sum(SVMLabel == 1), class2 = sum(SVMLabel == 2)) 

В качестве альтернативы, вы можете также использовать команду таблицы и преобразовать в кадр данных следующим образом:

df$Date <- as.Date(df$createdTime) 
summary_df <- as.data.frame(table(df$Date, df$SVMLabel)) 
+0

спасибо! Это очень помогло мне! – rkuebler

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