С помощью ddply
и summarise
вы можете, вероятно, получить большинство вещей из plyr
:
foo <- data.frame(
User = paste("user",c(1:3,1:3,1:3),sep=""),
StartTime = as.numeric(Sys.time() + 1:9*10),
EndTime = as.numeric(Sys.time() + 1:9*10 + 2))
library(plyr)
ddply(foo,"User",summarise,
Nvisits = length(StartTime),
AvgTimePerSes = mean(EndTime - StartTime),
AvgTimeBetweenSes = mean(StartTime[-1] - StartTime[-length(StartTime)])
)
User Nvisits AvgTimePerSes AvgTimeBetweenSes
1 user1 3 2 30
2 user2 3 2 30
3 user3 3 2 30
Редактировать:
Используя фрейм данных из ответа Романа:
foo <- read.table(textConnection("User StartTime EndTime
user1 1291043867 1291044055
user2 1290970409 1290972041
user3 1291019561 1291019562
user2 1290897232 1290897244
user1 1291100532 1291100559
user3 1291142492 1291142496
user2 1291128374 1291128391
user2 1291032746 1291032748"), header = TRUE)
library(plyr)
ddply(foo,"User",summarise,
Nvisits = length(StartTime),
AvgTime = mean(EndTime - StartTime),
AvgBetweenSes = mean(StartTime[-1] - StartTime[-length(StartTime)])
)
User Nvisits AvgTime AvgBetweenSes
1 user1 2 107.50 56665
2 user2 4 415.75 20779
3 user3 2 2.50 122931