2012-07-28 3 views
2

첫 번째 변수는 활동 (x1)이고 두 번째 변수는 해당 활동의 응답자 등급 (x2)이고 세 번째 변수는 적절한 이름입니다 x1 (x3)의 활동도. x1 변수는 응답자로 작성되며 활동 x3의 참조 변수와 매우 비슷하지만 모두 약간 다릅니다. 모든 x1을 참조 x3으로 바꾸고 싶습니다. 각 참조 활동 x3을 참조하는 루프를 사용하고 x1 응답자를 agrep와 같은 프로그램을 사용하여 작성한 활동으로 대체하려고 생각했습니다. 그러나, agrep는 그 경기가 무엇인지 말해 줄뿐입니다. x1 변수를 x3의 "올바른"문자열 제목으로 대체하려면 어떻게합니까? R에서퍼지 매칭을 사용하여 R 변수의 문자열을 대체하십시오

답변

1

, 그것은 일치하지 일치

agrep('chrg', c('charge', 'trapper', 'friend', 'charger')) 
# [1] 1 4 

대신 인덱스의 값을하고 싶은 경우

의 수를 볼 수있는 인덱스를 반환 agrep 기능, 당신은 value=TRUE를 전달할 수 있습니다. 당신의 갱신 후

agrep('chrg', c('charge', 'trapper', 'friend', 'charger'), value=TRUE) 
# [1] "charge" "charger" 

편집 : 단계에

x1 경우와 (각 인덱스에 대해 당신이 같은 활동의 이름을 가지고는) 여기에 트릭을 할 것입니다 코드 조각입니다. 그들이 상에없는 경우 agrep으로 다음과 같이

subs <- function(x, old, new) { 
    # Replace 'old' by 'new' in 'x'. 
    matchv <- match(x, old, nomatch=0) 
    replace(x, matchv > 0, new[matchv]) 
} 
# y is any vector that contains short names. 
subs(y, x1, x3) 

당신은 oldnew 벡터를 만들 수 있습니다.

oldnew <- sapply(x1, function(x) { agrep(x, x3, value=TRUE)[1] }) 
subs(y, names(oldnew), oldnew) 
+0

@ gui1aume 죄송합니다. 계약서에 대한 부분을 올바르게 입력하지 않았습니다. 지금 수정했습니다. 가치 코멘트 주셔서 감사하지만, 어떤 항목이 기준을 충족하는지보고 싶지 않습니다. 기준과 일치하는 값을 다른 값으로 대체하려고합니다. 질문에서 언급했듯이, 나는 agrep이 사용하는 명령이라고 생각하지 않는다. 나는 찾고있는 퍼지 매치 유형의 일러스트레이션으로 사용했다. 문제가되는 경기를 대체합니다. – kirk

관련 문제