我有一个名为“WFBS”的列,其中包含超过一百万行不同长度的字符串,如下所示:
WFBS <- c("M010203", "S01020304", "N104509")
我需要一个看起来像这样的输出:
WFBS1 <- c("M01", "S01", "N10")
WFBS2 <- c("02", "02", "45")
WFBS3 <- c("03", "03", "09")
WFBS4 <- c(NA, "04", NA)
所以我需要将每个字符串分开: 第一列:3 个字符(即字母后跟 2 位数字) 其余列:每列 2 个字符,直到我没有字符为止
我尝试使用函数 strsplit,但它说我的变量不是字符,所以我创建了一个向量 x,如下所示:
x <- as.character(WFBS)
但后来我不知道如何使用函数 strsplit 将字符串分成几列。
最佳答案
使用 base R
创建分隔符 的选项,
使用 sub
,使用 read.csv
读取到创建一个 4 列数据框
read.csv(text = sub("^(...)(..)(..)(.*)", "\\1,\\2,\\3,\\4", WFBS),
header = FALSE, colClasses = rep("character", 4), na.strings = "",
col.names =paste0("WFBS", 1:4), stringsAsFactors = FALSE)
# WFBS1 WFBS2 WFBS3 WFBS4
#1 M01 02 03 <NA>
#2 S01 02 03 04
#3 N10 45 09 <NA>
关于r - 如何将一串不同长度的数字和字母分成R中的不同列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56992460/