R - 将多个文本模式与单个引用相关联

时间:2017-08-08 20:14:09

标签: r gsub

我有一个数据文件,其代码重复,我需要将这些代码映射到更正式的名称。我的数据文件有一列,并且代码代表内部代理....“123”,“1234”和“12345”是代码并重复多次。代码“123”等于“ABC”,代码“1234”等于“BCA”,“12345”等于“CAB”。我想要做的就是添加另一个映射这些关系的列。

我尝试了下面的gsub代码,但是每个实例都覆盖了上一个命令。

data$agency <- gsub("12345","CAB",data$Code) data$agency <- gsub("1234","BCA",data$Code) data$agency <- gsub("123","ABC",data$Code)

任何建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

你可以尝试

install.packages("stringr")

library(stringr)
data$agency <- sapply(data$Code, function(x) str_replace_all(x, c("12345"="CAB","1234"="BCA","123"="ABC")))

这会将您的所有模式修改为向量中所有元素的相应替换

答案 1 :(得分:0)

解释&#34; emilliman5&#34;评论,

> data
   agency
1  12345
2   1234
3    123

创建一个新的代码表,如下所示:

> codeTable
   code value
1   123   ABC
2  1234   BCA
3 12345   CAB

并且,以下命令将返回您想要的结果:

> data['new_column'] <- codeTable$value[match(data$agency, codeTable$code)]
> data
  agency new_column
1  12345        CAB
2   1234        BCA
3    123        ABC