Ben*_*bbn 5 string split r fixed-width
新手提问!我有一列包含两种不同固定宽度格式的字符串。我们可以通过名称识别格式的类型,并根据格式分割字符串。
df <- data.frame(
var1 = c('M1B123456789MM1158','M1C123456789zMM1183'),
var2 = c('code1','code8'))
Run Code Online (Sandbox Code Playgroud)
固定宽度格式为:
formatM1B = c(3,9,2,4)
formatM1C = c(3,9,1,2,4)
Run Code Online (Sandbox Code Playgroud)
所以我希望这个结果:
|format|var1_2 |var1_3|var1_5|var1_6|code |
1|M1B |123456789| |MM |1158 |code1|
2|M1C |123456789|z |MM |1183 |code8|
Run Code Online (Sandbox Code Playgroud)
我尝试了split、str_split或str_split_fixed函数,但我不知道如何将其与某种 IF 函数结合起来以“测试”或“正则表达式”字符串中提到的格式。这个问题肯定被问了很多次,我做了几个小时的研究,但无法找到适合我的数据的东西:/
library(tidyverse)
df %>%
extract(col= var1,into = c('format','1','2','3','4'),
regex = "^(M[1-9][A-Z])([1-9]{9})(z)?(M{2})([1-9]{4})")
Run Code Online (Sandbox Code Playgroud)
正则表达式有 5 组:
输出:
format 1 2 3 4 var2
1 M1B 123456789 MM 1158 code1
2 M1C 123456789 z MM 1183 code8
Run Code Online (Sandbox Code Playgroud)