1) 提取 使用所示的模式来提取数据。即使测试数据字段内容中没有空格,但是即使有空格这个方法也可以正常工作。
library(dplyr)
library(tidyr)
pat <- "NAME: *(.*) SURNAME: *(.*) AGE: *(.*) CITY: *(.*)"
dat %>%
extract(Infos, c("NAME", "SURNAME", "AGE", "CITY"), pat, convert = TRUE)
2) Base R 如果只使用base R,我们可以得到下面这个通用解决方案,即使列数或列名发生更改,该解决方案也将继续起作用。即使字段内容中有空格,它也能正常工作。它通过将“ Infos”转换为dcf格式,然后使用read.dcf函数进行读取来实现。
dat |>
with(gsub("(\\w+:)", "\n\\1", Infos)) |>
textConnection() |>
read.dcf() |>
as.data.frame() |>
type.convert(as.is = TRUE)
## NAME SURNAME AGE CITY
## 1 ANGELA SMITH 22 LA
## 2 ANDREW D'ONOFRIO 47 NYC
注意
将数据以可重复的形式呈现:
dat <-
structure(list(Infos = c("NAME: ANGELA SURNAME:SMITH AGE:22 CITY: LA",
"NAME: ANDREW SURNAME: D'ONOFRIO AGE:47 CITY: NYC")), class = "data.frame", row.names = c(NA,
-2L))