我有一个很大的dataframe,它的列如下所示:
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时,它不起作用。我可以在数据视图中通过复制粘贴找到匹配的内容,但是left_join什么也找不到。但是,使用sub (参见上文)对var执行左联接时要做一些工作。但是对于我的一些行,我需要在第一个连字符之后(在第二个连字符之前)找到匹配的字符。
发布于 2018-12-21 10:01:01
我们可以使用sub来匹配不是-的字符模式,然后是-和另一组不是-的字符,捕获为一个组((...)),然后用捕获组的反向引用(\\1)替换。
sub("^([^-]+-[^-]+).*", "\\1", var)
#[1] "150507-001" "KMD070515-2"
#[3] "15144KMD01AA-0000001" "Z75Z151222-0000001" https://stackoverflow.com/questions/53882656
复制相似问题