gpt4 book ai didi

r - 根据规则从字符串中提取字符(重复的连字符)

转载 作者:行者123 更新时间:2023-12-01 12:09:03 25 4
gpt4 key购买 nike

我有一个大型数据框,其中有一列看起来像这样:

var <- c("150507-001-0000001", "KMD070515-2-0000001", 
"15144KMD01AA-0000001", "Z75Z151222-0000001")

我想做的是提取部分字符串。我想要所有字符直到第二个连字符。所以这就是我需要的:

150507-001
KMD070515-2
15144KMD01AA-0000001
Z75Z151222-0000001

所以我知道如果我只想要连字符前的数据,我会这样做:

> var <- sub("-.*", "", var)

> var

150507
KMD070515
15144KMD01AA
Z75Z151222

我也试过一个包qdap,它有点给了我我想要的东西:

library("qdap")
var <- beg2char(var, "-", 2)

我确实通过最后的代码得到了我需要的列,但是似乎有些地方不对劲。因为当我根据列执行 left_join 时,它不起作用。我可以在数据 View 中通过复制粘贴找到匹配项,但 left_join 没有找到任何内容。然而,用 sub (见上文)制作的 var 做一个 leftjoin 确实有效。但是对于我的一些行,我需要第一个连字符之后(和第二个连字符之前)的字符来找到匹配项。

最佳答案

这是一个非正则表达式的解决方案,对于那些可能感兴趣的人:

x <- "150507-001-0000001"
paste(strsplit(x, "-")[[1]][1:2], collapse="-")

[1] "150507-001"

如果您想将此逻辑应用于整个矢量,请使用:

sapply(var, function(x) paste(strsplit(x, "-")[[1]][1:2], collapse="-"))

关于r - 根据规则从字符串中提取字符(重复的连字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53882656/

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