如何用r中的另一个字符串替换特定列中的所有行?

时间:2014-02-13 00:12:34

标签: r csv

我有一个像

这样的csv文件

data.csv

Identity,CampaignName,Adgroupname
12,abc1,asterix
13,abc2,asterix1
frere,abc3,asterix2
xrert,dasa,trete
14,tytyt,ababa

第一行是CSV文件的标题。

在上面的CSV文件中,如果'rer'出现在'Identiity'列中的字符串中,则将整个字符串替换为'17'。例如'frere'将是'17'。我可以使用'gsub'来替换'rer',但是如何用另一个字符串替换整个字符串? R的新手,感谢任何帮助。

我想要的输出

Identity,CampaignName,Adgroupname
12,abc1,asterix
13,abc2,asterix1
17,abc3,asterix2
17,dasa,trete
14,tytyt,ababa

1 个答案:

答案 0 :(得分:2)

dat <- read.csv(
   text=
"Identity,CampaignName,Adgroupname
12,abc1,asterix
13,abc2,asterix1
frere,abc3,asterix2
xrert,dasa,trete
14,tytyt,ababa")

默认情况下,Identity列是一个因素,您无法将新字符串引入因子:

 dat$Identity[grepl("rer",dat$Identity)] <- "17"
 ## Warning message:
 ## In `[<-.factor`(`*tmp*`, grepl("rer", dat$Identity), value = c(1L,  :
 ##   invalid factor level, NA generated

您可以在阅读数据时使用stringsAsFactors=FALSE,或者(从原始数据集开始)

 dat$Identity <- as.character(dat$Identity)
 dat$Identity[grepl("rer",dat$Identity)] <- "17"

然后,您可能希望将列转换回数字变量:

 dat$Identity <- as.numeric(dat$Identity)