【问题标题】:Find words beginning with a certain character, remove that character and add other characters to the end, in R在R中查找以某个字符开头的单词,删除该字符并将其他字符添加到末尾
【发布时间】:2021-06-06 01:20:43
【问题描述】:

我有一个大数据框,其中一列“scientificName”有各种科学名称及其作者。其中一些名称是混合名称,由前面的“×”表示(注意这是乘法符号×,不是标准文本 x)。有些混血儿在名字的第一个词前面有符号,但我只对第二个词前面有符号的人感兴趣(例如“Rosa ×obtusa Ripart” 我想做的是通过“物种”列并删除第二个单词开头的所有符号,并将_x(纯文本“x”)附加到相同的end词,即。

Rosa ×obtusa Ripart -> Rosa obtusa_x Ripart

我开始了

df$scientificName[str_detect(df$scientificName, "×")]

但我一直在尝试只选择第二个单词,更不用说删除和添加字符了。

感谢您的任何帮助! 这里的玩具数据集(只需要修改第三个条目):

df <- data.frame(stuff=c("hybrids", "are", "annoying"), scientificName=c("×Conyzigeron huelsenii (Vatke) Rauschert","Viola wittrockiana Koppert", "Rosa ×obtusa Ripart"))

【问题讨论】:

    标签: r regex replace stringr


    【解决方案1】:

    使用sub你可以试试:

    sub('^(\\w+)\\s(×)(\\w+)', '\\1 \\3_x', df$scientificName)
    
    #[1] "×Conyzigeron huelsenii (Vatke) Rauschert"
    #[2] "Viola wittrockiana Koppert"              
    #[3] "Rosa obtusa_x Ripart"         `
    

    对于第二个单词中包含× 的字符串,这会提取× 之后的字符,并将_x 附加到它们之后,从中删除×

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 2015-11-18
      • 1970-01-01
      相关资源
      最近更新 更多