2017-09-02 92 views
0

我有這種類型的報紙標題的豐富的數據幀假設值:使用「GSUB」在一個字符串變量取決於另一個變量

ID標題類別
10516§瓦斯科·羅西婦女和我想她的臨終前不久
音樂§12489§紅色的擔憂:最受矚目的一週音樂的音樂會
§§12490紅色失望和苦澀關於他將醫生瓦倫西亞體育
§§12494情人節紅劉後做熊塔斯在週四下午的決定,十一月§體育
12502§情人節紅色的沉默打破了硬消息的錯誤後,洛倫佐§體育
12504§瘋狂的紅色和馬爾克斯的想法在瓦倫西亞§首頁
33006§紅馬爾克斯值得失去世界§首頁
59689§紅色通知穿上利沃諾關閉了再工業化§工作的重要階段

現在我想準確地識別標題的各種「羅西」現在(在意大利羅西辭職和大姓)。
當兩個姓名都存在,問題是很容易解決:

NEWS2_df $標題< - lapply(NEWS2_df $標題,GSUB,模式= 「華倫天奴紅」 更換= 「valentino_rossi」 ,固定= TRUE)
NEWS2_df $標題< - lapply(NEWS2_df $標題,GSUB,模式= 「瓦斯科·羅西」 更換= 「vasco_rossi」 固定= TRUE)

但是當只有姓目前我想「史密斯」成爲Vasco_Rossi當物品的類別是「音樂」和Valentino_R當骨骼文章類別是「體育」。
基本上使用「GSUB」在一個字符串變量取決於由假設值,另一個變量
誰能告訴我該怎麼辦呢?

最後,當製品類是「家」將有可能找出文章的主題(並更改名稱Valentino_Rossi/Vasco_Rossi)考慮到標題換句話說存在(例如,「馬爾克斯「 - Valentino_Rossi>」 演唱會「 - > Vasco_Rossi)
有沒有人能幫助我嗎?
感謝

回答

3

首先,你不需要lapply此 - 已經gsub被量化。

要只爲DF的部分去做,簡單地亞:你以後再

NEWS2_df$Title[NEWS2_df$Category == "Sport"] <- gsub("\b(?<!_)rossi\b", 
      "valentino_rossi", NEWS2_df$Title[NEWS2_df$Category == "Sport"], 
      perl=TRUE) 

做到這一點與下劃線的版本替換「華倫天奴紅」,這樣很容易認識到這些地方的第一個名字是不存在。

隨着家庭,它的工作方式相同,只是增加grepl獻給所有,幫助你消除歧義的話:

subset <- NEWS2_df$Category == "Home" & grepl("marquez", NEWS2_df$Title) 

NEWS2_df$Title[subset] <- gsub("\b(?<!_)rossi\b", "valentino_rossi", 
           NEWS2_df$Title[subset]], perl=TRUE) 
+0

OK克里斯托夫,作品!而一旦刪除「lapply」gsub要快得多 – Giorjet

相關問題