gpt4 book ai didi

r 子串通配符搜索以查找文本

转载 作者:行者123 更新时间:2023-12-04 10:07:42 27 4
gpt4 key购买 nike

我有一个 data.frame 列,其值如下所示。我想使用每个单元格并创建两列 - num1 和 num2,这样 num1=“-” 之前的所有内容和 num2=“-”和“.”之间的所有内容。

我正在考虑使用 gregexpr 函数,如图所示 here并编写一个 for 循环来迭代每一行。有没有更快的方法来做到这一点?

60-150.PNG
300-12.PNG

employee <- c('60-150.PNG','300-12.PNG')
employ.data <- data.frame(employee)

最佳答案

尝试

library(tidyr)
extract(employ.data, employee, into=c('num1', 'num2'),
'([^-]*)-([^.]*)\\..*', convert=TRUE)
# num1 num2
#1 60 150
#2 300 12

或者
library(data.table)#v1.9.5+
setDT(employ.data)[, tstrsplit(employee, '[-.]', type.convert=TRUE)[-3]]
# V1 V2
#1: 60 150
#2: 300 12

或者基于@rawr 的评论
 read.table(text=gsub('-|.PNG', ' ', employ.data$employee),
col.names=c('num1', 'num2'))
# num1 num2
#1 60 150
#2 300 12

更新

保留原始列
extract(employ.data, employee, into=c('num1', 'num2'), remove=FALSE,
'([^-]*)-([^.]*)\\..*', convert=TRUE)
# employee num1 num2
#1 60-150.PNG 60 150
#2 300-12.PNG 300 12

或者
 setDT(employ.data)[, paste0('num', 1:2) := tstrsplit(employee, 
'[-.]', type.convert=TRUE)[-3]]
# employee num1 num2
#1: 60-150.PNG 60 150
#2: 300-12.PNG 300 12

或者
 cbind(employ.data, read.table(text=gsub('-|.PNG', ' ', 
employ.data$employee),col.names=c('num1', 'num2')))
# employee num1 num2
#1 60-150.PNG 60 150
#2 300-12.PNG 300 12

关于r 子串通配符搜索以查找文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901979/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com