使用另一个.CSV文件的列搜索一个.CSV文件

时间:2015-08-10 21:33:19

标签: r

Open Payments Data

我正在使用两个Excel文件。一个是非常大的(~5到6 GB)数据集。这来自政府的公开支付数据,该数据免费开放供所有人查看。这是一个文件,列出了从工业界到医生的所有披露的付款,它向公众开放(这就是我截取屏幕截图的原因)。

我使用的第二个Excel文件也很大,但它是一个文件,列出了特定机构医生的披露付款。

我的目标:

我想过滤'公开支付数据只包括我在第二个Excel文件中的医生。有没有办法做到这一点?公开支付数据不一致,有一些大写和小写。

到目前为止我做了什么:

我已经能够解析开放式支付数据,只包括我正在寻找的医生的状态。我还将这两个.csv文件导入R并相应地命名。

我现在正在参加R课程,但它没有帮助......我在网上找到的大部分答案都是针对较小的数据集。我正在使用的数据有大约500,000行!提前感谢您的见解。

编辑:这是头(mydata)

 Physician_Profile_ID Physician_First_Name
1               377519                KELLI
2               377519                KELLI
3               377519                KELLI
4               272641                ABDUL
5               272641                ABDUL
6               272641                ABDUL
  Physician_Middle_Name Physician_Last_Name
1                     A                AABY
2                     A                AABY
3                     A                AABY
4                     A               AADAM
5                     A               AADAM
6                                     AADAM
  Physician_Name_Suffix
1                      
2                      
3                      
4                      
5                      
6                      
  Submitting_Applicable_Manufacturer_or_Applicable_GPO_Name
1                          BioHorizons Implant Systems Inc.
2                          BioHorizons Implant Systems Inc.
3                          BioHorizons Implant Systems Inc.
4                                    APOLLO ENDOSURGERY INC
5                                    APOLLO ENDOSURGERY INC
6                             BOSTON SCIENTIFIC CORPORATION
  Applicable_Manufacturer_or_Applicable_GPO_Making_Payment_Name
1                              BioHorizons Implant Systems Inc.
2                              BioHorizons Implant Systems Inc.
3                              BioHorizons Implant Systems Inc.
4                                        Apollo Endosurgery Inc
5                                        APOLLO ENDOSURGERY INC
6                                 Boston Scientific Corporation
  Total_Amount_of_Payment_USDollars Date_of_Payment
1                             11.55       6/17/2014
2                            187.50        6/4/2014
3                            222.24       5/23/2014
4                             60.20        5/4/2014
5                            110.15       7/28/2014
6                             12.36      12/10/2014
  Form_of_Payment_or_Transfer_of_Value
1           In-kind items and services
2           In-kind items and services
3           In-kind items and services
4           In-kind items and services
5           In-kind items and services
6           In-kind items and services
  Nature_of_Payment_or_Transfer_of_Value City_of_Travel
1                      Food and Beverage               
2                                   Gift               
3                              Education               
4                      Food and Beverage               
5                      Food and Beverage               
6                      Food and Beverage               
  State_of_Travel Country_of_Travel
1                                  
2                                  
3                                  
4                                  
5                                  
6    

这是头(institution_data,2):

  DB.ID Last.Name First.Name
1 12345    Johnson    John
2 12354     Twain      Mark

名称已更改为机密性。不幸的是,DB ID!= Physician_ID。

1 个答案:

答案 0 :(得分:1)

可以构建医生ID的列表(实际矢量):

 PHY_ID <- unique( 
        institution_data$DB.ID[ institution_data$DB.ID %in% mydata$Physician_Profile_ID ] )

然后使用与该向量的匹配从主文件中提取数据:

chargedata <- mydata[ mydata$Physician_Profile_ID %in% PHY_ID , ]

还可以使用match使用相同的逻辑,但%in%功能使用match&#34;引擎盖下#34;用%in%编写的代码通常更容易阅读。如果ID不匹配,如果是这种情况你应该说明,那么可以尝试进行名称匹配,但添加额外的标准是有意义的,例如附近的邮政编码状态。