R 具有多个条件的子集数据帧
假设我有一个数据帧R 具有多个条件的子集数据帧,r,dataframe,subset,R,Dataframe,Subset,假设我有一个数据帧ARAP,其中的列名为CoCd和VendorNo。 我想将以下组合的所有行子集到另一个名为EMIU\u EMIJ的数据帧中: CoCd="EMIJ" & VendorNo = "100010" or CoCd="EMIU" & VendorNo = "2000001" or CoCd="EMIU" & VendorNo = "2000006". 如何组合&和|以选择两种组合都满足的行? 也就是说,它需要将CoCd和VendorNo组合配对在一起 我试过
ARAP
,其中的列名为CoCd
和VendorNo
。
我想将以下组合的所有行子集到另一个名为EMIU\u EMIJ
的数据帧中:
CoCd="EMIJ" & VendorNo = "100010" or
CoCd="EMIU" & VendorNo = "2000001" or
CoCd="EMIU" & VendorNo = "2000006".
如何组合&和|以选择两种组合都满足的行?
也就是说,它需要将CoCd
和VendorNo
组合配对在一起
我试过了
EMIU_EMIJ<-subset(ARAP,CoCd=="EMIJ"&VendorNo=="100010"|
CoCd=="EMIU"&VendorNo=="2000001"|
CoCd=="EMIU"&VendorNo=="2000006")
EMIU\u EMIJ一个简单的merge
和all.y
选项就可以了
例如,如果mydf是您的数据
set.seed(111)
mydf <- data.frame(id=rep(LETTERS, each=4)[1:100], replicate(3, sample(1001, 100)),Class=sample(c("Yes", "No"), 100, TRUE))
mydf$CoCd <- paste0("EMI",mydf$id)
mydf$VendorNo <- paste0(mydf$X1,mydf$X2)
mydf <- unique(mydf[,c("CoCd","VendorNo","Class","X3")])
你想要这些组合
combination_to_select<-data.frame(CoCd=c("EMIA","EMID","EMIF"),VendorNo=c('594577','47894','423407'),stringsAsFactors=FALSE)
combination_to_select
CoCd VendorNo
1 EMIA 594577
2 EMID 47894
3 EMIF 423407
composition\u to\u select您的问题是不一致的-您说,您有数据帧EMIU\u EMIJ,但您是对象ARAP的子集。最后一行中的条件是正确的,错误指向另一个错误。您是否可以发布完整错误和样本数据(即使用dput
)为了获得更准确的答案,请按照Zbynek提到的更新您的问题。您可能正在查找base
包的extract
函数:请参阅子集
文档中的警告。Zbynek,您是对的,我正在对名为ARAP的DF进行子集设置,以创建名为EMIU_EMIJ的DF。谢谢你,汉克斯·瑞芬,“加1”!D
CoCd VendorNo Class X3
1 EMIA 594577 Yes 727
2 EMIA 727137 Yes 921
3 EMIA 371939 Yes 123
4 EMIA 514176 No 950
5 EMIB 377818 Yes 668
6 EMIB 41713 No 85
7 EMIB 11637 No 579
8 EMIB 530266 No 212
9 EMIC 430566 Yes 241
10 EMIC 93958 No 533
11 EMIC 551197 Yes 176
12 EMIC 585686 No 565
13 EMID 67827 Yes 154
14 EMID 47894 No 469
15 EMID 155952 No 718
16 EMID 441649 No 835
17 EMIE 169541 Yes 945
18 EMIE 952871 Yes 452
19 EMIE 306441 No 358
20 EMIE 604730 No 920
21 EMIF 423407 No 868
22 EMIF 280668 Yes 658
23 EMIF 335907 Yes 830
24 EMIF 379620 Yes 841
25 EMIG 946644 No 471
combination_to_select<-data.frame(CoCd=c("EMIA","EMID","EMIF"),VendorNo=c('594577','47894','423407'),stringsAsFactors=FALSE)
combination_to_select
CoCd VendorNo
1 EMIA 594577
2 EMID 47894
3 EMIF 423407
subset <- merge(mydf,combination_to_select,by=c("CoCd","VendorNo"),all.y=TRUE)
CoCd VendorNo Class X3
1 EMIA 594577 Yes 727
2 EMID 47894 No 469
3 EMIF 423407 No 868