【问题标题】:Using separate_rows() and tidyverse to remove punctuation and combine terms使用 separate_rows() 和 tidyverse 删除标点符号并组合术语
【发布时间】:2020-11-13 16:27:50
【问题描述】:

我认为,这是一个简单的问题,但我似乎找不到使用sep = 使用特殊标点符号来解决separate_rows 的线程。我有一个大型数据框,我在其中使用文本挖掘来提取每个观察中的数据科学术语(N = 2,000)。然后我将该数据作为附加列包含在数据科学解决方案ds_solutions 中。我想将这些术语分开,然后使用group_bycount = 来查看不同类别是否有任何趋势/模式。

但是,使用sep = ",",我无法删除其他字符['"',因此我有条目读取为"['forecasting'" 而不仅仅是forecasting 的情况。这是我在分离行之前可以做的事情吗?还是之后?提前感谢您的想法!

Project <- c("A", "B", "C")
Stage <- c("Pilot", "Pilot", "Idea")
ds_solutions <- c("['image recognition', 'ai', 'forecast', 'machine learning', 'machine learning model']", 
                  "['clustering', 'sentiment analysis', 'nlp', 'time series']", 
                  "['classifier', 'cluster analysis', 'classification', 'scraping', 'databases']")
sample <- data.frame(Project, Stage, ds_solutions)

Project Stage  ds_solutions
A       Pilot  ['image recognition', 'ai', 'forecast', 'machine learning', 'machine learning model']
B       Pilot  ['clustering', 'sentiment analysis', 'nlp', 'time series']
C       Idea   ['classifier', 'cluster analysis', 'classification', 'scraping', 'databases']

【问题讨论】:

    标签: r dplyr tidyverse tidyr


    【解决方案1】:

    这行得通吗?

    library(dplyr)
    library(tidyr)
    
    sample %>% 
      mutate(ds_solutions = substr(ds_solutions, 3L, nchar(ds_solutions) - 2L)) %>% 
      separate_rows(ds_solutions, sep = "['\"],\\s*['\"]")
    

    【讨论】:

    • 嘿@ekoam - 确实如此!输出仍然包括用引号括起来的每个术语(例如,“线性回归”、“回归”、“贝叶斯”等)。我想我可以在包含在 csv 中后删除它?
    • 嗨@bjk127,我刚刚更新了答案。这个怎么样?
    • 确实如此!感谢您的输入。不知道我是否会单独想出那个正则表达式。
    • 嗨@bjk127,很高兴知道这一点。如果此答案或任何其他答案解决了您的问题,请单击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
    • 当然。谢谢@ekoam!
    猜你喜欢
    • 2011-10-14
    • 2017-06-25
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2012-06-25
    • 2018-10-30
    相关资源
    最近更新 更多