数据争用 R 中的索赔数据以查找每个成员相对于特定日期的总成本

Data wrangling Claims Data in R to find the total cost per member with respect to particular date

我目前正在处理索赔数据。我无法判断如何解决这个问题。以下是样本数据(claims_input):-

claims_input

 CLAIM_ID  MEM_NUMBER Year_Month PLACE_OF_SERVICE NET_PAYABLE
 6343985    123456     2011-Jan          CLINICS      55.65
 6332945    123456     2011-Jan          CLINICS      190.05
 6303844    956096     2011-Apr          CLINICS      115.00
 6320409    984659     2011-Jan          PHARMACY     92.00
 4300650    095877     2011-Jan          CLINICS      92.00
 6034750    496500     2011-Feb          PHARMACY     193.97

claims_output

CLAIM_ID  MEM_NUMBER Year_Month Clinics  Pharmacy 
 6343985    123456     2011-Jan  55.65    NA
 6332945    123456     2011-Jan  190.05   NA
 6303844    956096     2011-Apr  115.00   NA
 6320409    984659     2011-Jan  NA       92.00
 4300650    095877     2011-Jan  92.00    NA
 6034750    496500     2011-Feb  NA       193.97

这里的重点是检查每个成员在特定日期为诊所和药房索赔的金额是多少。

谢谢。期待一些见解。

现在清楚了。您只需要 tidyr 函数 spread:

 library(tidyr)
 spread(df, PLACE_OF_SERVICE, NET_PAYABLE)
  CLAIM_ID MEM_NUMBER Year_Month CLINICS PHARMACY
1  4300650      95877   2011-Jan   92.00       NA
2  6034750     496500   2011-Feb      NA   193.97
3  6303844     956096   2011-Apr  115.00       NA
4  6320409     984659   2011-Jan      NA    92.00
5  6332945     123456   2011-Jan  190.05       NA
6  6343985     123456   2011-Jan   55.65       NA

再试一次,给定编辑后的问题:

library(dplyr)
library(tidyr)
claims_output <- claims_input %>% group_by(CLAIM_ID) %>% spread(PLACE_OF_SERVICE,NET_PAYABLE)
claims_output
Source: local data frame [6 x 5]

  CLAIM_ID MEM_NUMBER Year_Month CLINICS PHARMACY
1  4300650      95877   2011-Jan   92.00       NA
2  6034750     496500   2011-Feb      NA   193.97
3  6303844     956096   2011-Apr  115.00       NA
4  6320409     984659   2011-Jan      NA    92.00
5  6332945     123456   2011-Jan  190.05       NA
6  6343985     123456   2011-Jan   55.65       NA

请注意,MEM_NUMBER 095877 缩减为 95877,因为零左对齐。这应该不是问题,但可以修复。

data.table 方法,假设您的数据被命名为 dt。这假设您的日期已经构建为年月,否则您将需要创建一个年月日期,以便您可以按该变量求和。

library(data.table)
# Collapse all charges by member, date, and place of service #
dt <- dt[,list('amount'=sum(amount)), by=c('member_no', 'date', 'place_of_service')]

# Reshape to wide #
dt.wide <- reshape(dt, idvar=c('member_no', 'date'), timevar='place_of_service', direction='wide') 

# Rename per your example, correcting member_no #
setnames(dt.wide,c('member_no', 'date', 'clinic', 'pharmacy'))