@ DASH2已經提供了我認爲是最好的答案假設你與國名工作然而,如果你正在尋找一些更普遍的和/或東西,達到什麼這個問題的呼叫稱號對於或更緊密的例子相符,這裏是一個想法...
的gsub
第一/ pattern
參數是一個正則表達式,所以你可以匹配任何字符 /加入」前後,或您的匹配字符串後秒。 *「之前和之後它是這樣的...
gsub(".*Yugoslav.*", "Macedonia", "The former Yugoslav Republic of Macedonia")
所以從上面的確切例如,固定的工作怎麼聽起來像你想會是什麼樣子?
t<-as.data.frame(sapply(data, function(x) gsub(".*Yugoslav.*", "Macedonia",x)))
注意:gsub
是矢量化,即它接受了x
參數一個特徵向量,所以沒有必要通過sapply
運行它。以下兩條命令都大致相當(雖然sapply加名的結果)...
sapply(data, function(x) gsub("Yugoslav", "Macedonia",x))
gsub("Yugoslav", "Macedonia", data)
所以一個更好的版本你確切的例子是...
t <- as.data.frame(gsub(".*Yugoslav.*", "Macedonia", data))
假設您有一個數據框df
,其中包含一個名爲country
的列/向量,其中包含字符串,以下代碼將(全部)更改包含「南斯拉夫」到「馬其頓」的任何值(包括諸如「前南斯拉夫的馬其頓共和國」之類的字符串)在現有的da中TA幀...
df$country <- gsub(".*Yugoslav.*", "Macedonia", df$country)
您將需要一個單獨的命令爲每一組要交換的字符串,所以我不認爲這是實現它,如果你有很多的變化做出最好的辦法,但也許你只是想做一些改變,或者你可能因爲某種原因想手動做每一項改變。
如果投了票,請提供原因。 – tg110
根據國家數量,我可能會建立一個查找表(一個命名向量),並使用它來轉換其中一列或構建一個新列。請參閱SO文檔中的[本文](http://stackoverflow.com/documentation/r/1088/creating-vectors#t=201703281744454924664)。沒有示例數據,很難提供更多的建議。 – lmo
@ lmo-大約有25-30個國家。我會研究你提供的鏈接。至於數據 - 我已經解釋了幾乎所有的數據。 df1中某一列中的國家/地區名稱需要與df2中的一列中的國家/地區名稱匹配 – tg110