2012-07-28 78 views
2

我有3個相關變量的數據:第一個是活動(x1),第二個是受訪者對該活動的評級(x2),第三個是專有名稱在x1(x3)中的活動。 x1變量被寫入響應,並且與活動x3的參考變量非常接近,但都略有不同。我想匹配並用參考x3替換所有x1 - 我正在考慮使用指向每個參考活動x3的循環,並使用像agrep這樣的程序替換x1響應者編寫的活動。但是,agrep似乎只是告訴我比賽是什麼。我如何用x3中的「正確」字符串標題替換x1變量?使用模糊匹配替換R中變量中的字符串

回答

1

在R,agrep返回它找到了一個匹配,不匹配

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

如果你想擁有的價值,而不是指數的數量指標的功能,你可以通過value=TRUE。您更新後

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

編輯:這裏

如果x1和是同相(每個索引你有相同活動的名字)是一個片段,它會做的伎倆。

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) 

如果他們不是同相的,你可以用agrep如下創建oldnew載體。

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

@ gui1aume對不起,我沒有正確輸入關於agrep的部分,現在我已經修復了它。感謝值的評論,但我不想看看哪些條目滿足條件 - 我正在尋找替換符合標準的值與另一個值。正如問題中所述,我不認爲agrep是使用的命令,我只是將它用作我正在尋找的模糊匹配類型的示例。它取代了這個問題的比賽。 – kirk 2012-07-28 20:22:49