2016-10-01 106 views
2

我有一個數據框,我需要根據兩個變量對它進行處理,但兩個變量在行中都是「準相同的」。這意味着他們可以有一個-'s:或一行中的空格,但在另一行中沒有它。 我確實使用了unique(),但此功能僅適用於相同的值。假設我們有此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) 

準相同值在在兩個第一觀察可變Art,它們只是用於s:不同。我如何過濾和刪除這些類型的值?

回答

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) 
} 

然後用yy更換N$Art,這將允許您使用duplicated/unique

N$Art = yy 
N.2 = N[!duplicated(N$Art), ] 
相關問題