如何在R中分别分割字符和数字

Ari*_*ant 0 regex r

我有一个如下所示的数据框:

df= data.frame(name= c("1Alex100.00","12Rina Faso92.31","113john00.00"))
Run Code Online (Sandbox Code Playgroud)

我想将其拆分为一个包含3列的数据框,以便输出如下所示:

name1 name2      name3
1     Alex       100.00
12    Rina Faso  92.31
113   john       00.00
Run Code Online (Sandbox Code Playgroud)

我尝试过stringr()和grep()并且成功有限.缺少分隔符会使其变得更加困难.

akr*_*run 6

你可以试试

library(tidyr)
res <- extract(df, name, into=c('name1', 'name2', 'name3'),
                  '(\\d+)([^0-9]+)([0-9.]+)', convert=TRUE)
res
#    name1     name2  name3
#1     1      Alex 100.00
#2     2 Rina Faso  92.31
#3     3      john  50.00

str(res)
# 'data.frame': 3 obs. of  3 variables:
#$ name1: int  1 2 3
#$ name2: Factor w/ 3 levels "Alex","john",..: 1 3 2
# $ name3: num  100 92.3 50
Run Code Online (Sandbox Code Playgroud)

更新

基于@DavidArenburg的帖子中的'df'

 res <- extract(df, name, into=c('name1', 'name2', 'name3'),
                   '(\\d+)([^0-9]+)([0-9.]+)', convert=TRUE)
 res
 #    name1         name2 name3
 #1   121       Réunion 13.76
 #2     2 Côte d'Ivoire 22.40
 #3     3          john 50.00
Run Code Online (Sandbox Code Playgroud)