【问题标题】:How to extract a specific text from a vector that is separated with multiple commas in R如何从R中用多个逗号分隔的向量中提取特定文本
【发布时间】:2022-06-10 19:48:01
【问题描述】:

这是我的第一篇文章,我对 R 世界还比较陌生,所以我希望我能恭敬地将我的问题发布到网站上。我搜索了这个,但我找不到有效的方法。

我有一列有这样的结构:

df$col1 <- c("book, pencil,eraser,pen", "book,pen", "music,art,sport").

每个单元格中的元素用逗号分隔。我知道当单元格仅用一个逗号和两个逗号(左、中或右元素)分隔时如何提取元素。然而,当涉及到用三个、四个或有时五个逗号提取某些元素时,我很难做到这一点。例如,我想从第一个有书、铅笔、橡皮擦和钢笔的单元格中提取橡皮擦。我已经将str_extract 与符号一起使用,但我使用符号的知识有限。比如我知道在两个逗号的情况下,中间的元素(在3格的情况下是art)可以通过

str_extract(df$col1, '(?<=,)[^,]+(?=,))

您能否分享一下当单元格有两个以上逗号时如何提取某个第 n 个元素的想法?

提前非常感谢!

【问题讨论】:

    标签: r extract


    【解决方案1】:

    接下来呢?

    library(tidyverse)
    
    c("book, pencil,eraser,pen", "book,pen", "music,art,sport") %>% 
      str_split(",")
    
    #> [[1]]
    #> [1] "book"    " pencil" "eraser"  "pen"    
    #> 
    #> [[2]]
    #> [1] "book" "pen" 
    #> 
    #> [[3]]
    #> [1] "music" "art"   "sport"
    

    【讨论】:

    • 我已经尝试过了,但这并没有给我某个单元格的提取物。我想要实现的是,我想得到,比方说,用三个逗号分隔的单元格中的第三个元素(在第一个单元格的情况下是橡皮擦)(或用分隔的单元格中的第 n 个元素n-1 个逗号)。你提供的拆分,我猜它不会提取,但我可能是错的:)
    【解决方案2】:

    您可以使用strsplit。我这个案例n 是 3。

    df$col1 <- c("book, pencil,eraser,pen", "book,pen", "music,art,sport")
    strsplit(df$col1, ',')[[1]][3]
    
    [1] "eraser"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多