从文本中提取数据的最有效方法

从文本中提取数据的最有效方法,第1张

概述我想知道从列中提取文本的最有效方法是使用data.table中的子函数. 例如,我们有以下数据集: test <- data.table(a = c("Hello world, this is Tom and I am a guy", "Hello world, this is Jack and I am a guy")) 我想提取名字.提取名称的一种方法是使用替换函数 test[, Name : 我想知道从列中提取文本的最有效方法是使用data.table中的子函数.

例如,我们有以下数据集:

test <- data.table(a = c("Hello world,this is Tom and I am a guy","Hello world,this is Jack and I am a guy"))

我想提取名字.提取名称的一种方法是使用替换函数

test[,name := sub(".*? this is (.*?) and.*","\1",a)]

但我想知道,这是最有效的方式吗?

解决方法 结合str_extract和str_remove可以减少时间

library(stringr)test1 <- test[rep(seq_len(.N),1e6)]test2 <- copy(test1)system.time(test1[,a)])    #   user  system elapsed #  4.590   0.002   4.597 system.time(test2[,name :=  str_remove(str_extract(a,"this is \w+"),"this is ")])#   user  system elapsed #   2.259   0.076   2.339 IDentical(test1$name,test2$name)#[1] TRUE
library(microbenchmark)f1 <- function()  sub(".*? this is (.*?) and.*",test1$a)f2 <- function() str_remove(str_extract(test1$a,"this is ")microbenchmark(f1(),f2(),unit = 'relative',times = 10L)  #Unit: relative#expr     min      lq     mean   median       uq      max neval# f1() 2.12879 2.14592 2.145551 2.173798 2.188693 2.121836    10# f2() 1.00000 1.00000 1.000000 1.000000 1.000000 1.000000    10
总结

以上是内存溢出为你收集整理的从文本中提取数据的最有效方法全部内容,希望文章能够帮你解决从文本中提取数据的最有效方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1039364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存