2017-05-10 25 views
1

我有一個csv格式的事件日誌,並且想要在表格中指定具有特定條件的單元格。表格如下所示。如何在csv文件中指定具有R中某些條件的單元格

Case.ID | Activity | Timestamp | Resource 
---------------------------------------------- 
    0 |Take order| 00:12:04 | Waiter 
---------------------------------------------- 
    0 |Take order| 00:18:02 | 
---------------------------------------------- 
    1 |Bring food| 00:47:23 | Cook helper 
---------------------------------------------- 
    1 |Bring food| 00:52:41 | 

該活動的開始在資源列中有價值,但該活動的結尾沒有任何內容。

我想做一個列持續時間,這是從結束時間戳到開始時間戳的差異,但不知道如何處理它。

+0

通過Case.ID使用時間戳列上的函數'difftime'聚合'。 –

+0

你的Timestamp col是什麼類? – timfaber

+0

@timfaber現在是一個因素 –

回答

0

使用通過@timfaber給出的數據幀做:

aggregate(x = list(duration = as.POSIXct(df$Timestamp,format = "%H:%M:%S")), 
      by = list(Case.ID = df$Case.ID), 
      FUN = diff) 

這給出:

Case.ID duration 
1  0 5.966667 
2  1 5.300000 
1

如果你強迫你的因素是一個字符變量,你可以嘗試:

library(tidyverse) 

df = data.frame(Case.ID = c(0,0,1,1), 
      Activity = c(rep("Take order",2),rep("Bring food",2)), 
      Timestamp = c("00:12:04","00:18:02","00:47:23","00:52:41"), 
      Resource = c("Waiter","","Cook helper",""),stringsAsFactors = F) 



df %>% group_by(Case.ID) %>% mutate(timing = as.difftime(Timestamp[length(Timestamp)])-as.difftime(Timestamp[1])) 

不那麼優雅的,因爲它在行回收價值,但我不知道你的目標在

相關問題