@ 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