我有一个单列数据集,其中每一行都是不同长度的连接字符串。我正在尝试使用正则表达式将每一行分成 3 列。数据集的示例如下所示。
第 1 列 (ID) 是字母数字的初始字符串。长度始终相同(在本例中为 24 个字符)
第 2 列(类型)将是中间位。长度和字符类型可能有所不同(& 符号、空格、斜杠、逗号,但绝不是数字)
第 3 列(数字)将是字符串最终数字序列,其长度也是固定的(在本例中为 14)。
c23uij49753dfd3273shdjsh /Animals/Birds/Cardinal 0.873289139232
91873nc9248jfe08jsdif894 /Animals/Mammals/Felines/Tigers 0.989734823872
38939137fhjnffnf73nxlppa /Transportation/Automobiles & Vehicles/Ford-Explorer 0.983947399348
data <- data.frame(
string=c("c23uij49753dfd3273shdjsh /Animals/Birds/Cardinal 0.873289139232",
"91873nc9248jfe08jsdif894 /Animals/Mammals/Felines/Tigers 0.989734823872",
"38939137fhjnffnf73nxlppa /Transportation/Automobiles & Vehicles/Ford-Explorer 0.983947399348"))
我一直在尝试使用 extract(),但无法获得针对中间部分的正则表达式。像下面这样的东西是在正确的轨道上,但并没有让我到达那里。
output <- extract(data, string, into=c('ID', "Type", "Numerical"), "(.{24)([a-zA-Z]*)(.{14})