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