如何使用R将连续数据聚合到每日数据中

时间:2016-01-06 15:33:11

标签: r facebook aggregation xts

我在rfacebook的帮助下从facebook的API中提取数据。我使用支持向量机进行情绪分析,将每条消息分类为正面或负面。

我现在拥有的数据

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)

然而,这似乎无效。

号码仅包含NA。

我尝试了其他一些东西,但它没有用。

充其量我希望有一个数据框,它可以统计我每天有多少1和2个SVM标签。但是,我不知道该怎么做。

这里的任何帮助都会非常感激!

万分感谢您的亲切帮助!

2 个答案:

答案 0 :(得分: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))

或者,您也可以使用table命令并转换为数据框,如下所示:

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

答案 1 :(得分:0)

我根本不知道xts包,所以我使用了POSIXct格式。

假设您的数据框名为“df”:

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 x 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

哪个看起来对我来说。