2016-01-19 20 views
2

ID,說明我奮力更換stringA在一列描述與stringB如果stringA包含stringC

1,DRIVING VEHICLE ON HIGHWAY WITHOUT CURRENT REGISTRATION PLATES AND VALIDATION TABS 

2,EXCEEDING SPEED LIMIT IN SCHOOL ZONE WITH 35 MPH IN 25 ZONE 

3,DRIVING VEHICLE IN EXCESS OF REASONABLE AND PRUDENT SPEED ON HIGHWAY 8855 

如果我想用「超速」,如果它包含了「速度」來替代整個說明列。 我使用GSUB功能:

training_data$Description = gsub("(dot)(star)SPEED(dot)(star)","EXCESS SPEED",training_data$Description,fixed = TRUE) 

它仍然沒有工作我得到的結果(只是「超速」取代「速度」,而不是整行):

輸出接收:

id,Description 

1,DRIVING VEHICLE ON HIGHWAY WITHOUT CURRENT REGISTRATION PLATES AND VALIDATION TABS 

2,EXCEEDING EXCESS SPEED LIMIT IN SCHOOL ZONE WITH 35 MPH IN 25 ZONE 

3,DRIVING VEHICLE IN EXCESS OF REASONABLE AND PRUDENT EXCESS SPEED ON HIGHWAY 8855 

預期輸出:

id,Description 

1,DRIVING VEHICLE ON HIGHWAY WITHOUT CURRENT REGISTRATION PLATES AND VALIDATION TABS 

2,EXCESS SPEED 

3,EXCESS SPEED 

回答

0

你可以試試這個:

training_data$Description = sapply(training_data[,2],function(sentence){ 

    if(grepl("SPEED",sentence)){ 
    as.character("EXCESS SPEED") 
    }else{ 
    as.character(sentence) 
    } 
}) 
+0

我認爲這有點過於複雜。 'replace(training_data $ Description,grepl(「SPEED」,training_data $ Description),「EXCESS SPEED」)或類似的操作會執行此操作。如果覆蓋數據,甚至可以使用'training_data $ Description [grepl(「SPEED」,training_data $ Description)] < - 「EXCESS SPEED」。 – thelatemail

+0

training_data $ Description [grepl(「SPEED」,training_data $ Description)] < - 「EXCESS SPEED」 非常感謝!有用 :) –