R编程:如果列表中的字符串,则替换数据帧中的字符串

时间:2014-04-24 19:14:09

标签: r

我需要在销售数据库中对客户进行分组。示例数据库:

         CLIENT.CODE    PRODUCT    SALES              
          AA1            B          5
          AA3            B          5
          BB4            B          5
          AC87           B          5

我需要做两件事:

1#创建一个列表: 清单(AA1,AC87)

2#更改我的数据框,这样如果客户端代码在该列表中,我将修改为另一个代码

结果:

         CLIENT.CODE    PRODUCT    SALES              
          Groupe         B          5
          AA3            B          5
          BB4            B          5
          Groupe         B          5

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用ifelse

df
#  CLIENT.CODE PRODUCT SALES
#1         AA1       B     5
#2         AA3       B     5
#3         BB4       B     5
#4        AC87       B     5

client_codes <- c("AA1", "AC87")
df$CLIENT.CODE <- ifelse(df$CLIENT.CODE %in% client_codes, 
                         "Groupe", as.character(df$CLIENT.CODE))

df
#  CLIENT.CODE PRODUCT SALES
#1      Groupe       B     5
#2         AA3       B     5
#3         BB4       B     5
#4      Groupe       B     5

答案 1 :(得分:0)

为什么不使用gsub而忘记列表?这样,您可以在一行中捕获结果,而无需创建client_code

> dat
##  CLIENT.CODE PRODUCT SALES
##1         AA1       B     5
##2         AA3       B     5
##3         BB4       B     5
##4        AC87       B     5
> dat$CLIENT.CODE <- gsub("(AA1)|(AC87)", "Groupe", dat$CLIENT.CODE)
> dat
##  CLIENT.CODE PRODUCT SALES
##1      Groupe       B     5
##2         AA3       B     5
##3         BB4       B     5
##4      Groupe       B     5