如何在tidyr::separate
正则表达式中将数字(包括点分隔符)与字母分隔开?在我目前的尝试中,似乎第二个字符串的第一个字母被砍掉了。
复溶:
df <- data.frame(x = c("24.1234AAA", "14.4321BBB"))
df
#> x
#> 1 24.1234AAA
#> 2 14.4321BBB
# This works but it is missing the first letter of the string
tidyr::separate(df, x, c("part1", "part2"), sep = "[^0-9 | {.}]", extra = "merge", convert = TRUE)
#> part1 part2
#> 1 24.1234 AA
#> 2 14.4321 BB
# This gets the letter string completely, but not the numbers
tidyr::separate(df, x, c("part1", "part2"), sep = "([0-9.]+)", extra = "merge", convert = TRUE)
#> part1 part2
#> 1 NA AAA
#> 2 NA BBB
创建于2022年12月31日,使用reprex v2.0.2
注意:数字和字母的长度并不总是相同的,所以我们不能用数字向量作为tidyr::separate
的sep
参数。
1条答案
按热度按时间bnlyeluc1#
使用regex lookaround拆分数字(
\\d
)和字母([A-Z]
)或者将
extract
与捕获组一起使用