我有一个如下所示的数据框:
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()并且成功有限.缺少分隔符会使其变得更加困难.
你可以试试
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)