2014-04-24 71 views
0

我需要將客戶端分組到銷售數據庫中。示例數據庫: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 

謝謝

回答

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 
+0

代碼有效,但我不想在輸出數據集中輸入client.codes的數值。有沒有解決的辦法? – user1783504

+0

對不起,沒有注意。更新爲使用字符而非因素。 –

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