gpt4 book ai didi

r - 根据列中的模式拆分行中的数据框

转载 作者:行者123 更新时间:2023-12-05 01:50:25 24 4
gpt4 key购买 nike

我有一个这样的数据框;

mydf=data.frame(Authors=c("A","B","C"), ID=c("1","2","3"), Adresses=c("[XYZ, DEF] Ege Univ, Izmir, Turkey","[Vil, Beat; Fern, Alm; Pro-Pas, Ram; Fevfz, Jes; Saur, Mari] INIA CSIC, Dept Genet Anim, Madrid, Spain; [Penza, Carna; Housen, Rosie] Univ Edigh, Roxbn Inst, Edinburgh, Scotland","[Zeek, Umt] Kastamonu Univ, Kast, Turkey; [Kalu, Sear] Ege Univ, Fac Engn, Izmir, Turkey"))

看起来是这样的:

data frame before

我想根据 Adresses 列中的模式拆分它,如下所示:

enter image description here

这里的模式是这样的:[ ] ;但是单元格的最后一条记录(或者如果单元格只有一条记录)没有分号,正如您从第一张图片中看到的那样。

我在 r 中尝试使用 tidyrdplyrregex 以及这个 strsplit(as.character(mydf[,3 ]), "[[(.*)]](.*);") 模式,但它不起作用。任何帮助将不胜感激。

最佳答案

base R 中,我们可以将列拆分为向量的列表,然后根据listlengths 并通过 unlisting list

更新“地址”
lst1 <- strsplit(mydf$Adresses, ";\\s*(?=\\[)", perl = TRUE)
mydf2 <- transform(mydf[rep(seq_len(nrow(mydf)), lengths(lst1)),],
Adresses = unlist(lst1))
row.names(mydf2) <- NULL

-输出

> mydf2
Authors ID Adresses
1 A 1 [XYZ, DEF] Ege Univ, Izmir, Turkey
2 B 2 [Vil, Beat; Fern, Alm; Pro-Pas, Ram; Fevfz, Jes; Saur, Mari] INIA CSIC, Dept Genet Anim, Madrid, Spain
3 B 2 [Penza, Carna; Housen, Rosie] Univ Edigh, Roxbn Inst, Edinburgh, Scotland
4 C 3 [Zeek, Umt] Kastamonu Univ, Kast, Turkey
5 C 3 [Kalu, Sear] Ege Univ, Fac Engn, Izmir, Turkey

关于r - 根据列中的模式拆分行中的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73139735/

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