根据另一个变量假定的值对字符串变量使用 "gsub"
use "gsub" on a string variable depending on the values assumed by another variable
我有一个丰富的此类报纸标题数据框:
ID Title Category
10516 § vasco rossi le donne e le sue paure pensavo di morire molto prima § Musica
12489 § rossi : il concerto più visto della settimana § Musica
12490 § rossi deluso e amareggiato cosa farà il dottore dopo valencia § Sport
12494 § valentino rossi il ricorso al tas la decisione nel pomeriggio di giovedì novembre § Sport
12502 § valentino rossi rompe il silenzio il duro messaggio a jorge lorenzo § Sport
12504 § pazza idea rossi e marquez a valencia § Home
33006 § dopo l errore con marquez rossi merita di perdere il mondiale § Home
59689 § rossi bando mise su livorno chiude fase importante per reindustrializzazione § Lavoro
现在我想准确识别标题中出现的各种 "Rossi"(在意大利语中 Rossi 是一个很常见的姓氏)。
当名字和姓氏都存在时,问题就很容易解决了:
NEWS2_df$Title <- lapply(NEWS2_df$Title, gsub, pattern = " valentino rossi ", replacement = " valentino_rossi ", fixed = TRUE)
NEWS2_df$Title <- lapply(NEWS2_df$Title, gsub, pattern = " vasco rossi ", replacement = " vasco_rossi ", fixed = TRUE)
但是当只有姓氏存在时,我希望 "Rossi" 在文章类别为 "music" 时变为 Vasco_Rossi,而在文章类别为 Valentino_Rossi 时是 "sport".
基本上根据另一个变量
假定的值对字符串变量使用 "gsub"
谁能告诉我该怎么做?
最后,当文章类别为 "Home" 时,可以识别文章的主题(并将名称更改为 Valentino_Rossi / Vasco_Rossi),同时考虑标题中存在其他词(例如 "Marquez" -> Valentino_Rossi "concerto"- > Vasco_Rossi)
有人能帮助我吗?
谢谢
首先,您不需要 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)
在将 "valentino rossi" 替换为下划线版本后执行此操作,这样很容易识别那些没有名字的人。
对于 home,它的工作方式相同,只需为所有帮助您消除歧义的单词添加 grepl
s:
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)
我有一个丰富的此类报纸标题数据框:
ID Title Category
10516 § vasco rossi le donne e le sue paure pensavo di morire molto prima § Musica
12489 § rossi : il concerto più visto della settimana § Musica
12490 § rossi deluso e amareggiato cosa farà il dottore dopo valencia § Sport
12494 § valentino rossi il ricorso al tas la decisione nel pomeriggio di giovedì novembre § Sport
12502 § valentino rossi rompe il silenzio il duro messaggio a jorge lorenzo § Sport
12504 § pazza idea rossi e marquez a valencia § Home
33006 § dopo l errore con marquez rossi merita di perdere il mondiale § Home
59689 § rossi bando mise su livorno chiude fase importante per reindustrializzazione § Lavoro
现在我想准确识别标题中出现的各种 "Rossi"(在意大利语中 Rossi 是一个很常见的姓氏)。
当名字和姓氏都存在时,问题就很容易解决了:
NEWS2_df$Title <- lapply(NEWS2_df$Title, gsub, pattern = " valentino rossi ", replacement = " valentino_rossi ", fixed = TRUE)
NEWS2_df$Title <- lapply(NEWS2_df$Title, gsub, pattern = " vasco rossi ", replacement = " vasco_rossi ", fixed = TRUE)
但是当只有姓氏存在时,我希望 "Rossi" 在文章类别为 "music" 时变为 Vasco_Rossi,而在文章类别为 Valentino_Rossi 时是 "sport".
基本上根据另一个变量
假定的值对字符串变量使用 "gsub"
谁能告诉我该怎么做?
最后,当文章类别为 "Home" 时,可以识别文章的主题(并将名称更改为 Valentino_Rossi / Vasco_Rossi),同时考虑标题中存在其他词(例如 "Marquez" -> Valentino_Rossi "concerto"- > Vasco_Rossi)
有人能帮助我吗?
谢谢
首先,您不需要 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)
在将 "valentino rossi" 替换为下划线版本后执行此操作,这样很容易识别那些没有名字的人。
对于 home,它的工作方式相同,只需为所有帮助您消除歧义的单词添加 grepl
s:
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)