基础r 中的一个选项是使用sub 创建分隔符,,然后使用read.csv:
out <- cbind(read.csv(text = sub(" (\\S+)$", ",\\1", df1$test22),
header = FALSE, stringsAsFactors = FALSE), df1[2])
out
#. V1 V2 Ticker
#1 Current SharePrice $6.57 MFM
#2 Current NAV $7.11 MFM
#3 Current Premium/Discount -7.59% MFM
#4 52WkAvg SharePrice $6.55 MFM
#5 52WkAvg NAV $7.21 MFM
#6 52WkAvg Premium/Discount -9.19% MFM
或者使用来自tidyr的extract
library(tidyverse)
df1 %>%
extract(test22, into = c("V1", "V2"), "^(\\S+\\s+\\S+)\\s+(.*)")
# V1 V2 Ticker
#1 Current SharePrice $6.57 MFM
#2 Current NAV $7.11 MFM
#3 Current Premium/Discount -7.59% MFM
#4 52WkAvg SharePrice $6.55 MFM
#5 52WkAvg NAV $7.21 MFM
#6 52WkAvg Premium/Discount -9.19% MFM
数据
df1 <- structure(list(test22 = c("Current SharePrice $6.57", "Current NAV $7.11",
"Current Premium/Discount -7.59%", "52WkAvg SharePrice $6.55",
"52WkAvg NAV $7.21", "52WkAvg Premium/Discount -9.19%"), Ticker = c("MFM",
"MFM", "MFM", "MFM", "MFM", "MFM")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))