2014-11-17 59 views
1

我有一个基于两个变量(分区,deployment.date)的子集的数据列表。根据文章和手册,我应该能够用一个&符号来完成它。然而,我所看到的是,每个人都可以独立工作,但在合并时无法工作。R子集逻辑

 
> tail(x) 
      Composite Version     Partition Deployment.Date 
6 MaintenanceService 1.4.34.5 SpecialProgram-IneligibleCR  2014-10-01 
7 MaintenanceService 1.4.34.5 SpecialProgram-IneligibleCR  2014-10-01 
8   Integration 1.6.1   SpecialProgram-PT  2014-10-13 
9   Integration 1.6.1   SpecialProgram-PT  2014-10-13 
10 UpdateTermChanges 1.9.0     TermChange  2014-09-28 
11 UpdateTermChangesV2 1.13.0.1     TermChange  2014-09-24 


> x[ grep("2014-10", x$Deployment.Date) , ] 
        Composite Version     Partition Deployment.Date 
1 TermChangeEventProcessor 1.9.1.1     TermChange  2014-10-31 
2 TermChangeIntegrationLayer 1.1.2.1     TermChange  2014-10-31 
3    UpdateOffers 2.5.2     TermChange  2014-10-10 
4    UpdateOffers 2.5.3     TermChange  2014-10-13 
5   MaintenanceService 1.4.34.4 SpecialProgram-IneligibleCR  2014-10-01 
6   MaintenanceService 1.4.34.5 SpecialProgram-IneligibleCR  2014-10-01 
7   MaintenanceService 1.4.34.5 SpecialProgram-IneligibleCR  2014-10-01 
8    Integration 1.6.1   SpecialProgram-PT  2014-10-13 
9    Integration 1.6.1   SpecialProgram-PT  2014-10-13 


> x[(x$Partition == " TermChange"), ] 
        Composite Version Partition Deployment.Date 
1 TermChangeEventProcessor 1.9.1.1 TermChange  2014-10-31 
2 TermChangeIntegrationLayer 1.1.2.1 TermChange  2014-10-31 
3    UpdateOffers 2.5.2 TermChange  2014-10-10 
4    UpdateOffers 2.5.3 TermChange  2014-10-13 
10   UpdateTermChanges 1.9.0 TermChange  2014-09-28 
11  UpdateTermChangesV2 1.13.0.1 TermChange  2014-09-24 

但是,当我一起使用它们的结果不是我所期望的。

 
> x[((grep("2014-10", x$Deployment.Date)) & (x$Partition == " TermChange")), ] 
        Composite Version Partition Deployment.Date 
1 TermChangeEventProcessor 1.9.1.1 TermChange  2014-10-31 
2 TermChangeIntegrationLayer 1.1.2.1 TermChange  2014-10-31 
3    UpdateOffers 2.5.2 TermChange  2014-10-10 
4    UpdateOffers 2.5.3 TermChange  2014-10-13 
10   UpdateTermChanges 1.9.0 TermChange  2014-09-28 
11  UpdateTermChangesV2 1.13.0.1 TermChange  2014-09-24 
Warning message: 
In (grep("2014-10", x$Deployment.Date)) & (x$Partition == " TermChange") : 
    longer object length is not a multiple of shorter object length 

我玩过括号分组以及使用双和号。我错过了什么,以便可以在2014-10年部署所有TermChange条目的子集?

谢谢。

回答

0

我喜欢从dplyr

library(dplyr) 
filter(x, grepl("2014-10",Deployment.Date) & Partition==" TermChange")) 

filter功能(本地数据测试)

1

你已混合整数子集和逻辑子集。

> x <- 9:12 

> grep('1', x) 
[1] 2 3 4 

> x<11 
[1] TRUE TRUE FALSE FALSE 

> grep('1',x) & x<11 
[1] TRUE TRUE FALSE FALSE 
Warning message: 
In grep("1", x) & x < 11 : 
    longer object length is not a multiple of shorter object length 

> which(x<11) 
[1] 1 2 

> intersect(grep('1',x), which(x<11)) 
[1] 2 

> grepl('1',x) & x<11 
[1] FALSE TRUE FALSE FALSE 
+2

谢谢。关于如何将两者结合起来而不诉诸外部包装的任何提示? – ramfree17