2016-01-06 85 views
0

我在rfacebook的帮助下从facebook的API中提取数据。我使用支持向量机进行情感分析,将每条消息分类为正面或负面。如何将连续数据汇总到日常数据中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 

我第一次运用

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

改变了createdTime列到XTS格式然后我第一次尝试汇总每天的评论数与

number = apply.daily(df, sum) 

但是,这看毫秒不工作。

号码只由NA组成。

我尝试了其他的东西,但它不工作。

充其量我最想拥有一个数据框架来统计每天有多少个1和2个SVM标签。但是,我不知道如何做到这一点。

这里的任何帮助将非常感谢!

非常感谢您的善意帮助!

回答

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×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)) 

另外,您也可以使用table命令,并转换为数据帧如下:

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

非常感谢!这帮助我很多! – rkuebler