用R中的一个字母替换整个字符串

问题描述:

我有一个数据集,我需要将每个数据重命名为“KAS”,以便列中的每个KASARAGOD实例。如果找到实例,我需要将该列中的整个内容替换为“KAS”。用R中的一个字母替换整个字符串

P O, PIN: 671543,KASARAGOD是公正KAS

我应该使用什么命令?

的样本数据:

G05 G06 G07 G08 G09 G10 address_2 
A A+ A+ A+ A+ A+ KUMBADAJE P O, PIN: 671551, KASARAGOD 
A B B B+ A A MALLAM P O, PIN: 671542, KASARAGOD 
B+ B B+ A+ C+ B+ KUMBADAJE P O, PIN: 671551, KASARAGOD 
B+ B+ B B+ A A+ MOVVAR P O, PIN: 671543, KASARAGOD 
B B B B+ A+ A+ MOVVAR P O, PIN: 671543, KASARAGOD 
A+ A+ A+ A+ A+ A+ MOVVAR P O, PIN: 671543, KASARAGOD 
B+ B+ B A B+ A YETHADKA P O, PIN: 671551, KASARAGOD 
C C C C C A MOVVAR P O, PIN: 671543, KASARAGOD 
A+ A+ A+ A+ A+ A+ MOVVAR P O, PIN: 671543, KASARAGOD 
+0

如果你的数据集是一张表,你可以发布它的头几行吗? – blakeoft 2014-09-22 16:17:16

+0

我已经提供了表格,对于迟到的回复抱歉..请帮助 – PSraj 2014-09-23 09:26:55

我的第一个想法是gsub。如果您的数据帧被称为EDU,尝试

edu$address_2 <- gsub(".*KASARAGOD.*", "KAS", edu$address_2) 

这会给你

G05 G06 G07 G08 G09 G10 address_2 
    A A+ A+ A+ A+ A+  KAS 
    A B B B+ A A  KAS 
B+ B B+ A+ C+ B+  KAS 
B+ B+ B B+ A A+  KAS 
    B B B B+ A+ A+  KAS 
A+ A+ A+ A+ A+ A+  KAS 
B+ B+ B A B+ A  KAS 
    C C C C C A  KAS 
A+ A+ A+ A+ A+ A+  KAS 
+0

当(RAN)是请求的输出时,这将产生'RAN'。 – Hugh 2014-09-22 13:56:28

+2

我明白你的意思,但要求两件相互冲突的事情。一个没有parens,一个with。 – blakeoft 2014-09-22 13:58:07

+0

是的好点,不确定括号是否实际上是字符串的一部分或只是列分隔符。 – Hugh 2014-09-22 13:59:09

的样本数据:

x <- c("(P O, PIN: 671543,RANCHI)", "(P O, PIN: 671543,BLAH)", "(P O, PIN: 67338,RANCITY)", "(P O, PIN: 671543,BBBCHI)") 

可以尝试greplifelse

x <- ifelse(grepl("RANCHI", x), "(RAN)", x) 
x 
## [1] "(RAN)" "(P O, PIN: 671543,BLAH)" "(P O, PIN: 67338,RANCITY)" "(P O, PIN: 671543,BBBCHI)" 

或者只是grep(或grepl

x[grep("RANCHI", x)] <- "(RAN)" 
x 
## [1] "(RAN)" "(P O, PIN: 671543,BLAH)" "(P O, PIN: 67338,RANCITY)" "(P O, PIN: 671543,BBBCHI)" 
+0

@DavidArenburg +1感谢您的编辑。你的解决方案非常整洁。 – jalapic 2014-09-22 13:54:41

这种替换包含RANCHI,用括号括起来的文本的每个实例,只是(RAN)

x <- gsub("\\(.*RANCHI.*\\)", "\\(RAN\\)", x)