2016-10-01 1 views
2

나는 데이터 프레임을 가지고 있는데, 두 변수에 따라 그것을 제거해야하지만 두 변수는 "준 유사"행에있다. 즉, - 또는 ' 또는 s 또는 : 또는 한 행의 공백이지만 다른 행의 공백은 가질 수 없습니다. unique()을 사용했지만이 기능은 동일한 값으로 작동합니다. 우리는 준 동일한 값이 2 명 개의 제 1 관찰 변수 Art에이 data.frameR - 데이터 프레임의 두 개의 준 동일 행을 삭제하는 방법은 무엇입니까?

Id<-c("RoLu1976","Rolu1976","AlBl1989","ThSa1996") 
Art<-c("Econometric Policy Evaluation: A Critique","Econometric Policy Evaluations A Critique", "Rules after discretion", "Expectations and the Nonneutrality of Lucas") 
Id.1<-c("FiKy1989","EdPr1986","BeBe1983","JoSt1989") 
Art.1<-c("Notes on the Lucas Critique","Notes on the Lucas Critique","The Inconsistency of Optimal Plans","The Inconsistency of Optimal Plans") 
N<-data.frame(Id,Art,Id.1,Art.1) 

가 단지 s: 및 A에 대한 다른 것을 가정한다. 이러한 종류의 값을 어떻게 필터링하고 삭제할 수 있습니까? 데이터를 기반으로

답변

2

, 나는 비슷한 문자열 일치 agrep을 사용 :

yy = NULL 
for(i in 1:length(N$Art)){ 
    temp = agrep(N[i,"Art"],N$Art,value=T) 
    y = ifelse(any(N[i,"Art"]==temp),temp[1],N[i,"Art"]) 
    yy = c(yy,y) 
} 

그런 다음 사용할 수있는 yyN$Art 교체를 duplicated/unique :

N$Art = yy 
N.2 = N[!duplicated(N$Art), ]