簡體   English   中英

如何使用R將連續數據聚合為每日數據

[英]How to aggregate continuous data into daily data with R

我在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標簽。 但是,我不確定如何執行此操作。

這里的任何幫助將不勝感激!

在此先感謝您的幫助!

使用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))

我根本不了解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

在我看來,這很對。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM