이것은 두 부분으로 나뉩니다.두 그룹으로 고유 수 찾기
먼저 요청을 처리하는 사용자가 있습니다.
User Voucher Number System Entry Date Queue Entry Date Queue Exit Date
user1 100004 8/11/2016 10:40 8/11/2016 10:40 8/11/2016 14:48
user2 100004 8/11/2016 10:40 8/11/2016 14:48 8/12/2016 16:11
user1 100004 8/11/2016 10:40 8/12/2016 16:11 8/18/2016 16:09
user3 100004 8/11/2016 10:40 8/18/2016 16:09 8/18/2016 16:11
user1 100004 8/11/2016 10:40 8/18/2016 16:11 10/12/2016 10:07
user2 100004 8/11/2016 10:40 10/12/2016 10:07 10/13/2016 13:34
user3 100004 8/11/2016 10:40 10/13/2016 14:57 10/13/2016 14:57
user4 1030003 8/18/2016 9:45 8/22/2016 16:02 8/24/2016 11:41
user2 1030003 8/18/2016 9:45 8/24/2016 11:41 8/29/2016 18:40
user1 1030003 8/18/2016 9:45 8/29/2016 18:40 8/29/2016 18:54
user1 1030003 8/18/2016 9:45 8/29/2016 18:54 8/29/2016 18:54
는 궁극적으로 나는 Queue Entry Date
에 의해 매일 처리하는 방법을 많은 요청 정량화 할 필요가있다. 문제는 요청이 사용자에 의해 닫히고 동일한 사용자가 다시 열 때가 있습니다. 마지막 두 행에 표시됩니다.
"user"
과 "Queue Entry Date"
이 이전 줄과 같으면 두 번째 인스턴스가 제거됩니다.
나는이를 확인 루프를 개발하지만 두 가지 문제가 있습니다
(1) 루프가 매우 느리고 (2) 나는 열려 3 번 이상 폐쇄 바우처를 가지고 말 같은 사용자가 순차적으로, 나는 프로그램이 이것을 어떻게 처리 할 것인지 완전히 확신하지 못한다.
가 궁극적으로 내가 같이하기 위해 테이블을 필요 :
바우처 수있을 것입니다 '큐 입국 날짜'의 기반 처리 상품권의 수를
User date voucher count
user1 8/11/2016 3
user2 8/11/2016 2
user3 8/11/2016 2
user4 8/11/2016 0
user1 8/12/2016 1
user2 8/12/2016 1
user3 8/12/2016 0
user4 8/12/2016 1
df <- structure(list(User = structure(c(1L, 2L, 1L, 3L, 1L, 2L, 3L,
4L, 2L, 1L, 1L), .Label = c(" user1", " user2", " user3",
" user4"), class = "factor"), Voucher.Number = c(100004L,
100004L, 100004L, 100004L, 100004L, 100004L, 100004L, 1030003L,
1030003L, 1030003L, 1030003L), System.Entry.Date = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("8/11/2016 10:40",
"8/18/2016 9:45"), class = "factor"), Queue.Entry.Date = structure(c(3L,
4L, 5L, 6L, 7L, 1L, 2L, 8L, 9L, 10L, 11L), .Label = c("10/12/2016 10:07",
"10/13/2016 14:57", "8/11/2016 10:40", "8/11/2016 14:48", "8/12/2016 16:11",
"8/18/2016 16:09", "8/18/2016 16:11", "8/22/2016 16:02", "8/24/2016 11:41",
"8/29/2016 18:40", "8/29/2016 18:54"), class = "factor"), Queue.Exit.Date = structure(c(4L,
5L, 6L, 7L, 1L, 2L, 3L, 8L, 9L, 10L, 10L), .Label = c("10/12/2016 10:07",
"10/13/2016 13:34", "10/13/2016 14:57", "8/11/2016 14:48", "8/12/2016 16:11",
"8/18/2016 16:09", "8/18/2016 16:11", "8/24/2016 11:41", "8/29/2016 18:40",
"8/29/2016 18:54"), class = "factor")), .Names = c("User", "Voucher.Number",
"System.Entry.Date", "Queue.Entry.Date", "Queue.Exit.Date"), class = "data.frame", row.names = c(NA,
-11L))
이것은 내가 사용되는 루프입니다 필터링 :
:counter = 0
filtDf = data.frame()
for (elem in 1:nrow(df)){
if (counter >0){
curElementId <- df[counter,c(4,12)]
prev <- df[elem,c(4,12)]
if (curElementId[1,1] == prev[1,1] & curElementId[1,2] == prev[1,2]){
filtDf <- rbind(filtDf,df[elem,])
}
else{
filtDf <- rbind(filtDf,df[elem,])
}
}
counter = counter + 1
}
그런 다음 주파수 테이블을 작성 다음 사용
filtDf$date<- as.POSIXct(filtDf$Queue.Exit.Date,format="%d/%d/%Y %H:%M")
filtDf$date <- as.character(round(filtDf$date , "day"))
dd <- ddply(filtDf , .(Queue.Entry.Date,User) , summarise , Count = length(User))
원하는 결과의 숫자가 어디서 왔는지 모르겠지만 'library (dplyr); %> % count (사용자 (%)) % (%)/% d (% , Queue.Entry.날짜)' – alistaire
출력이 혼란 스럽습니까? 'user4'의 레코드는 어디에서 사라졌습니까? –
@ joel.wilson 예 – DataTx