R 我想根据字母和数字将一列拆分为5个不同的列

R 我想根据字母和数字将一列拆分为5个不同的列,r,dataframe,split,multiple-columns,R,Dataframe,Split,Multiple Columns,我的数据表中有一列,我需要将其分为5列 一个典型的值是1A02B1,我需要将其分为1,A,02,B,1列 我们可以使用正则表达式创建分隔符,然后使用read.csvfrombase R v1 <- gsub("(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])", ",", df1$Col1, perl = TRUE) read.csv(text = v1, header = FALSE) # V1 V2 V3 V4 V5 #1 1 A 2

我的数据表中有一列,我需要将其分为5列


一个典型的值是1A02B1,我需要将其分为1,A,02,B,1列

我们可以使用正则表达式创建分隔符,然后使用
read.csv
from
base R

v1 <- gsub("(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])", ",", df1$Col1, perl = TRUE)
read.csv(text = v1, header = FALSE)
#  V1 V2 V3 V4 V5
#1  1  A  2  B  1
#2  1  B  3  C  1
数据
df11)假设注释末尾显示的输入数据帧传递一个匹配数字、非数字、数字、非数字和要读取的数字的模式。该模式将捕获组分为多个字段:

library(gsubfn)
pat <- "(\\d+)(\\D+)(\\d+)(\\D+)(\\d+)"
read.pattern(text = DF$x, pattern = pat, colClasses = "character")
根据需要,您可能需要省略或更改
colClasses
参数

2)或者,可以使用
strsplit
创建此矩阵:

do.call("rbind", strsplit(DF$x, "(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)", perl = TRUE))
##      [,1] [,2] [,3] [,4] [,5]
##  [1,] "1"  "A"  "02" "B"  "1" 
do.call(“rbind”,strsplit(DF$x),(?可能相关:可能重复
library(gsubfn)
pat <- "(\\d+)(\\D+)(\\d+)(\\D+)(\\d+)"
read.pattern(text = DF$x, pattern = pat, colClasses = "character")
  V1 V2 V3 V4 V5
1  1  A 02  B  1
do.call("rbind", strsplit(DF$x, "(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)", perl = TRUE))
##      [,1] [,2] [,3] [,4] [,5]
##  [1,] "1"  "A"  "02" "B"  "1" 
DF <- data.frame(x = "1A02B1", stringsAsFactors = FALSE)