2014-02-12 2 views
-1

를 복제 나는 R에 (셀 L2에서) 다음 Excel 수식을 모방하는 것을 시도하고있다 날짜. 두 개 이상의 레코드가 시작 날짜가 같으면 중복됩니다. 시작 날짜가 서로 다른 경우 복제됩니다. 위의 공식은 D에 대한 D와 R에 대한 R을 복제합니다. 예 :차별화 중복 및

Sample Date-Time Type 
4753432 24/01/13 10:20 D 
4753432 24/01/13 10:20 D 
4753441 24/01/13 11:23 R 
4753441 25/01/13 10:44 D 
4753441 25/01/13 10:44 D 
4753504 25/01/13 16:46 D 
4753504 29/01/13 16:28 D 
4766622 29/01/13 16:28 R 
4766622 31/01/13 9:40 R 

R에서 어떻게 할 수 있습니까?

+0

시작일? 또는 시작 날짜 - 시간? 예제 출력에도 실수가있는 것 같습니다. – A5C1D2H2I1M1N2O1R2T1

+0

예,있었습니다. 서둘러 일을하지 못하게됩니다. 죄송합니다. –

답변

1

왜 그냥 duplicated를 사용 변수는 두 가지 값을 가질 수 있다면 기본적으로, 당신이 선호하는 R에 논리적 유형 작업 수 있는가?

within(df, { 
    Type <- rep("R", nrow(df)) 
    Type[duplicated(Date.Time) | 
     duplicated(Date.Time, fromLast=TRUE)] <- "D" 
}) 
# Sample  Date.Time Type 
# 1 4753432 24/01/13 10:20 D 
# 2 4753432 24/01/13 10:20 D 
# 3 4753441 24/01/13 11:23 R 
# 4 4753441 25/01/13 10:44 D 
# 5 4753441 25/01/13 10:44 D 
# 6 4753504 25/01/13 16:46 R 
# 7 4753504 29/01/13 16:28 D 
# 8 4766622 29/01/13 16:28 D 
# 9 4766622 31/01/13 9:40 R 

아니면 뭔가 빠졌습니까?

+0

아니, 잘 작동하고 우아하게 - 당신이 놓치고있는 유일한 방법은 내가 R 학습 곡선에서 얼마나 멀리 떨어져 있는지 아는 것입니다. 고맙습니다. –

0

의 당신이 data.frame datfrm 열 이름

데이터를 포함하고 가지고 있다고 가정 해 봅시다
colnames(datfrm) <- c("Sample","Date-Time","Type") 
내가 더 당신은 당신의 예에서와 같이 날짜와 단일 문자열에 저장 시간이 있다고 가정

datestr <- substring(datfrm[,"Date-Time"],1,8) 
012 :
datfrm[1,"Date-Time"] 
# "24/01/13 10:20" 

, 당신의 예에 따라, 당신은 날짜 만에 있지만 그것은 중복의 경우 시간에 판단하기 때문에, 날짜를 추출

i+1 또는 i-1에있는 요소의 날짜가 동일한 경우 위치 i의 요소가 TRUE 인 논리 변수를 만듭니다.

dupflag1 <- c(datestr[1:(length(datestr)-1)] == datestr[-1], FALSE) 
dupflag2 <- c(FALSE, datestr[1:(length(datestr)-1)] == datestr[-1]) 
dupflag <- dupflag1 | dupflag2 

그것을 지금 년대 Type 열 따라

datfrm[,"Type"] <- ifelse(dupflag,"D","R") 

를 업데이트합니다.

datfrm[,"Type"] <- dupflag 
+0

감사합니다. 이것은 또한 간접적으로 내가 가진 또 다른 문제를 해결했습니다. –