gpt4 book ai didi

R-合并两个数据框,但某些值中有分号

转载 作者:行者123 更新时间:2023-12-04 11:08:26 26 4
gpt4 key购买 nike

我的一个数据框 (df1) 有这样一列:

ID
AB
CD;EF
IJ
KL
MN
OP;WX
WW
YZ

另一个数据框(df2)具有以下格式(这是一个非常大的数据表):

myIDColumn  someName    somevalue
AB gsdfg 123
CD tfgsdfg 234
EF sfdgsf 365
GH gdfgb 53453
IJ sr 64564
KL sfsdv 4234234
MN ewrwe 5
OP dsfsss 3453
QR gggg 667
ST dss 7567
UV hhhhjf 55
WX dfadasad 8657
YZ ghfgh 1234
ABC gdgfg 234455
VCB hgjkk 5555667

我想根据我的 df1 合并数据框,但我该如何解决这个问题此特定连接上的分号。有没有办法使用正则表达式连接这些数据框?

我想要的输出:

ID    someName    somevalue
AB gsdfg 123
CD;EF tfgsdfg,sfdgsf 234,365
IJ sr 64564
KL sfsdv 4234234
MN ewrwe 5
OP;WX dsfsss,dfadasad 3453,8657
WW
YZ dfadasad 8657
TT

非常感谢任何帮助。谢谢!

最佳答案

分两步,与发布的解决方案类似,但方式更紧凑。

  1. 合并2个data.frame
  2. 然后转换包含“;”的行

这里是代码:

##step1
mm <- merge(df2,df1,by.y='ID',by.x='myIDColumn',all.y=TRUE)
## step2
rr <- do.call(rbind,lapply(strsplit(mm$myIDColumn[grep(';',mm$myIDColumn)],';'),
function(x){
res <- paste(df2[df2$myIDColumn==x[1],],
df2[df2$myIDColumn==x[2],],
sep=',')
res[1] <- paste(x,collapse=';')
res}))
mm[grep(';',mm$myIDColumn),] <- rr

myIDColumn someName somevalue
1 AB gsdfg 123
2 CD;EF tfgsdfg,sfdgsf 234,365
3 IJ sr 64564
4 KL sfsdv 4234234
5 MN ewrwe 5
6 OP;WX dsfsss,dfadasad 3453,8657
7 WW <NA> <NA>
8 YZ ghfgh 1234

关于R-合并两个数据框,但某些值中有分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768270/

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