R 我想根据字母和数字将一列拆分为5个不同的列
我的数据表中有一列,我需要将其分为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
一个典型的值是1A02B1,我需要将其分为1,A,02,B,1列 我们可以使用正则表达式创建分隔符,然后使用
read.csv
frombase 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)