2011-10-03 5 views
1

행 인덱스를 추출하기 위해 data.frame에서 이중 일치를하고 싶습니다. 예를 들어 다음 data.frame에서 match1을 먼저 일치시키고 match1의 각 요소 내에서 match2로 일치 시키려합니다. 내가 정렬 아니에요 것을 제외하고, 내가 이중 일치를 확인하는double.f data.frame 일치

test = data.frame(name = c("bob" , "jane","adam","jane" ,"bob" , "adam") , date = as.Date(c(1,2,2,1,2,1))) 
match1 = c("jane" , "adam", "bob") 
match2 = c(as.Date(c(2,1))) 
result = c(2,4,3,6,5,1) 

답변

5

참고 -sort, 당신은

로드 zoo 라이브러리 (그 마스크를 as.Date)가 필요합니다
library("zoo") 

th에 해당하는 data.frame의 표시가 원하는 것처럼 보입니다. e 데이터. 프레임은 name에 따라 match1에 따라 정렬되고, date에 따라 match2에 따라 정렬됩니다. 요소를 사용하여이 순서를 생성 한 다음 order을 사용하여 색인을 얻을 수 있습니다.

order(factor(test$name, match1), factor(as.character(test$date), as.character(match2))) 

as.character

들은 올바른 순서로 요소로 전환 할 수 있도록 문자로 날짜를 강요하기 위해 필요합니다.

+0

위대한 작품! 너는 동물원에 관한거야. 정말 고마워! – SFun28

0

한 가지 방법을 일치하고있어 (다음 날짜, 이름에 의한) 더블 일종으로이 생각하는 것은 두 번하는 것입니다 "테스트"(이 TEST2 전화) 및 테스트 "테스트"의 평등과 "TEST2"작성된 코드가 작동하려면 것을

+0

huh? 나는 더블 정렬하려고하지 않고, 더블 매치를 시도하고있다. 그리고 인덱스를 추출하려고합니다. 평등을 테스트하는 것이 아닙니다. – SFun28