gpt4 book ai didi

regex - 在前两个冒号上拆分字符串

转载 作者:行者123 更新时间:2023-12-04 23:22:44 25 4
gpt4 key购买 nike

我想在前两个冒号上拆分一列字符串,但不要在任何后续冒号上拆分:

my.data <- read.table(text='

my.string some.data
123:34:56:78 -100
87:65:43:21 -200
a4:b6:c8888 -300
11:bbbb:ccccc -400
uu:vv:ww:xx -500', header = TRUE)

desired.result <- read.table(text='

my.string1 my.string2 my.string3 some.data
123 34 56:78 -100
87 65 43:21 -200
a4 b6 c8888 -300
11 bbbb ccccc -400
uu vv ww:xx -500', header = TRUE)

我进行了广泛的搜索,以下问题最接近我目前的困境:

Split on first comma in string

谢谢你的任何建议。我更喜欢使用基础 R。

编辑:

第一个冒号之前的字符数并不总是两个,前两个冒号之间的字符数也不总是两个。所以,我编辑了这个例子来反射(reflect)这一点。

最佳答案

在基础 R 中:

> my.data <- read.table(text='
+
+ my.string some.data
+ 123:34:56:78 -100
+ 87:65:43:21 -200
+ a4:b6:c8888 -300
+ 11:bbbb:ccccc -400
+ uu:vv:ww:xx -500', header = TRUE,stringsAsFactors=FALSE)
> m <- regexec ("^([^:]+):([^:]+):(.*)$",my.data$my.string)
> my.data$my.string1 <- unlist(lapply(regmatches(my.data$my.string,m),'[',c(2)))
> my.data$my.string2 <- unlist(lapply(regmatches(my.data$my.string,m),'[',c(3)))
> my.data$my.string3 <- unlist(lapply(regmatches(my.data$my.string,m),'[',c(4)))
> my.data
my.string some.data my.string1 my.string2 my.string3
1 123:34:56:78 -100 123 34 56:78
2 87:65:43:21 -200 87 65 43:21
3 a4:b6:c8888 -300 a4 b6 c8888
4 11:bbbb:ccccc -400 11 bbbb ccccc
5 uu:vv:ww:xx -500 uu vv ww:xx

你会看到我用过 stringsAsFactors=FALSE确保 my.string可以作为字符串向量处理。

关于regex - 在前两个冒号上拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749546/

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