2013-04-18 5 views
-1

j'ai une chaîne de catégorie comme suit:temps de calcul consacré à des catégories

categoryVector <- c("1_100_1_2_3") 

J'ai aussi le temps correspondant à chaque catégorie:

timeVector <- c("2013-03-07 05:16:50,617_2013-03-07 05:19:24,984_2013-03-07 05:21:06,002_2013-03-07 05:21:06,833_2013-03-07 05:21:10,713") 

Je voudrais calculer le temps consacré aux catégories 1 et 2

Time spent in category 1: (Time in 100 - Time in 1) + (Time on 2 - Time on 1) 
Time spent in category 2: Time on 3 - Time on 2 

je dois répéter ces calculs pour 200K + enregistrements. Existe-t-il un moyen efficace de le faire en R?

+1

Voir '? Strsplit','? As.POSIXct' pour un peu plus d'informations. –

Répondre

0
inp <- read.table(text=gsub("_", "\n", timeVector), sep=",") 
inp$V1 <- as.POSIXct(inp$V1) 
inp2 <- read.table(text=gsub("_", "\n", categoryVector)) 

inp$diffs <- c(difftime(inp$V1[-1], inp$V1[-nrow(inp)]), NA) 
inp <- cbind(inp,inp2) 
        V1 V2 diffs V1 
1 2013-03-07 05:16:50 617 154 1 
2 2013-03-07 05:19:24 984 102 100 
3 2013-03-07 05:21:06 2  0 1 
4 2013-03-07 05:21:06 833  4 2 
5 2013-03-07 05:21:10 713 NA 3 
# should probably rename those columns 
tapply(inp$diffs, inp[,4], sum, na.rm=TRUE) 
# 1 2 3 100 
#154 4 0 102