안녕하세요, 너무 절박하여 문의드립니다.
현재 심평원 데이터 분석연습을 하고 있는데요,
다음과 같이 JID = 환자 식별 코드, RECU_FR_DD = 요양급여 시작일, RECU_TO_DD = 요양급여 종료일, AMT =약제 비용이라고 할 때,
다음과 같이 데이터를 정리할 수 있는 방법이 있는지 문의드립니다.
1) 요양급여 기간을 합치는 것
JID=140번 환자의 경우 요양급여기간이 여러 행에 걸쳐 있는데 첫 시작일은 2015-04-24, 종료일은 2015-05-19입니다.
모든 환자에 대해 이렇게 첫 시작일과 종료일을 산출하여 정리할 수 있는 방법이 있는지 문의드립니다.
2) 기간동안의 총합 AMT 구하기
해당 기간동안의 AMT의 합을 산출 할 수 있을지도 함께 문의드립니다.
아래는 JID를 group으로 해도 묶어봤는데, 결과값을 보니 제대로 합쳐지지 않음을 알 수 있었습니다.
new$AMT <- as.numeric(new$AMT)
new1 <- new %>% group_by(JID)%>%summarise(sum_AMT = sum(AMT))
감사합니다.
Comment 5
-
cardiomoon
2022.04.19 07:59
-
꾸이뭉
2022.04.19 08:18
네 교수님, 데이터 첨부했습니다!
목적은 시간변수를 합쳐서 약제시작점~ 유지점에 대한 drug survival(persistence)를 보고자 하는 것이며
해당 기간동안의 약제 비용을 분석하고자 하는 것입니다.
-
꾸이뭉
2022.04.19 08:47
방금 이런 저런 시도를 하다보니 2)번은 다음과 같은 코드로 구할 수가 있었습니다.
다만 기간(시간변수)을 합산하는건 어디에도 안나오는 것 같아서 이 부분을 문의드립니다.ㅜㅜ
#대상자별 약제 총비용 합산하기
aggregate(AMT ~ JID, data=new, sum)
-
cardiomoon
2022.04.19 10:31
library(tidyverse)
library(lubridate)
df=read.csv("~/Downloads/HIRA_ex.csv")
df$begin=ymd(df$RECU_FR_DD)
df$end=ymd(df$RECU_TO_DD)
df %>%group_by(JID) %>% summarize(start=min(begin),stop=max(end),sum=sum(AMT,na.rm=TRUE))
# A tibble: 61 × 4JID start stop sum<int> <date> <date> <int>1 140 2015-04-24 2015-05-19 284002 37358 2015-04-22 2015-04-22 113003 44189 2015-01-12 2015-01-12 04 95154 2015-05-06 2015-05-23 05 124604 2015-06-10 2015-06-10 06 151095 2015-06-04 2015-06-04 07 159015 2015-03-02 2015-03-04 08 163089 2015-03-01 2015-03-01 09 203482 2015-01-06 2015-01-20 010 243112 2015-06-10 2015-06-10 0 -
꾸이뭉
2022.04.19 10:55
헉 교수님 정말정말 감사합니다!ㅜㅜㅜ
raw data를 일부라도 올려봐주셔요