gpt4 book ai didi

r - 在R中将一个单元格拆分为多列

转载 作者:行者123 更新时间:2023-12-04 14:36:53 24 4
gpt4 key购买 nike

所以这就是我的专栏之一的样子:


资讯


姓名:安吉拉 姓:史密斯 年龄:22 城市:洛杉矶

姓名:ANDREW 姓氏:D'ONOFRIO 年龄:47 城市:纽约


我想创建四列:


姓名

年龄
城市


安吉拉
史密斯
22
洛杉矶

安德鲁
多诺弗里奥
47
纽约市


我读到我们可以使用与 tidyverse 的“分离”,这是我尝试过的。

library(tidyr)
library(tidyverse)

df <- infos %>% separate(Infos, c("NAME", "SURNAME","AGE","CITY"))

但这是输出:


姓名

年龄
城市


姓名
安吉拉

史密斯

姓名
安德鲁

多诺弗里奥


然后我想了解如何让 R 知道它必须分开什么。也许这个确切的主题之前已经在这里处理过(但我没有找到)所以如有必要,请随时重定向我!

最佳答案

1) 提取 使用带有所示图案的提取物。测试数据的字段内容中没有任何空格,但即使这样做也应该有效。

library(dplyr)
library(tidyr)

pat <- "NAME: *(.*) SURNAME: *(.*) AGE: *(.*) CITY: *(.*)"
dat %>%
extract(Infos, c("NAME", "SURNAME", "AGE", "CITY"), pat, convert = TRUE)
## NAME SURNAME AGE CITY
## 1 ANGELA SMITH 22 LA
## 2 ANDREW D'ONOFRIO 47 NYC
2) 基础 R 或者只使用基本 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))

关于r - 在R中将一个单元格拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68395742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com