진료내역 중에서는 주상병코드와 부상병코드가 구분되어있다.
주상병은 환자가 가장 우선적으로 치료를 요구를 병을 나타낸다. 부상병은 주상병 다음으로 호소하는 병을 의미한다.
데이터는 약 1200만개의 행으로 구성되어있다.
한 환자가 여러번 방문했기 때문에 이러한 데이터가 늘어났다. 이러한 점은 가입자일련번호가 중복되어 존재하는 것을 통해 알 수 있다.
사람이 특정 질병에 얼마나 많이 걸리는지 알기 위해서는 한 환자가 같은 질병으로 여러번 병/의원에 방문하여 진료받았다는 것을
감안하고 확인해야할 것이다.
1 2 3 4 5 | nhis<-read.csv("nhis.csv") head(nhis) summary(nhis) | cs |
중복된 데이터를 제거하기 위해 base라는 라이브러리 안에 있는 unique 라는 함수를 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | library(ggplot2) library(dplyr) total <- nhis %>% select(가입자일련번호,주상병코드,부상병코드) #데이터전처리과정 install.packages("base") library(base) total_new<-unique(total[, c("가입자일련번호","주상병코드","부상병코드")]) | cs |
이 과정에서 사실 문제가 생겼는데,,,12번 째 코드를 작동시키니 메모리가 부족하다고 작동을 멈춘 것이다...
중복된 값을 제거하지 않고 진행했던 코드가 있는데 그 코드를 살짝 변형시켜서 나머지를 완성해보고자 한다.
그렇기 때문에 앞 선 코드가 진행되어 완성된 시각화 부분이 존재하지않는다. 사실상 입코딩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #주상병 상위빈도 highest20_주상병<- total_new %>% group_by(주상병코드) %>% summarise(total=n()) %>% arrange(desc(total)) %>% head(20) #부상병 상위빈도 highest20_부상병<- total_new %>% group_by(부상병코드) %>% summarise(total=n()) %>% arrange(desc(total)) %>% head(20) | cs |
다음과 같이 코드를 쓰면, 주상병코드와 부상병코드의 빈도가 많은 상위 20개를 추출할 수 있다.
1 2 3 4 5 6 | #막대그래프 시각화 ggplot(data=highest20_주상병, aes(x=주상병코드,y=total))+geom_bar(stat="identity") ggplot(data=highest20_부상병, aes(x=부상병코드,y=total))+geom_bar(stat="identity") | cs |
이후 각각의 변수로 저장해둔 데이터를 바탕으로 다음과 같이 막대그래프를 그릴 수 있고, 빈도를 시각화하여 구현할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #상위 주상병코드를 지닌 환자들의 상위부상병 코드 순위 j209_highrank<-total_new %>% filter(주상병코드=="J209") %>% group_by(부상병코드) %>% summarise(total=n()) %>% arrange(desc(total)) %>% head(20) i109_highrank<-total_new %>% filter(주상병코드=="I109") %>% group_by(부상병코드) %>% summarise(total=n()) %>% arrange(desc(total)) %>% head(20) | cs |
이후로 진행해봤던 것은 상위를 차지했던 주상병들은 또 어떤 부상병을 주로 가지고 있는지 확인하는 것이였다.
질병코드를 확인하는 방법은 http://www.koicd.kr/
질병분류센터에 접속하여 확인했다.
J209는 상세불명의 기관지염이다. 기관지염과 관련한 이비인후과적인 진료를 필요로 해보이는 부상병코드가 다수를 이루었고
9번째 줄에 존재하는 I109는 기타 및 상세불명의 원발성 고혈압이다.
위의 코드를 입력하면 각각의 주상병코드가 주로 어떤 부상병코드를 가지고 있는지 확인할 수 있다.
위와 같은 진행을 통해 국민들이 어떤 질병을 많이 겪고 있는지 확인할 수 있고,
특정질병과 연관된 다른 부차적인 질병을 확인할 수 있을 것으로 기대된다.
'R programming' 카테고리의 다른 글
로지스틱 회귀분석-환자들 생존예측 (예제 따라하기) (0) | 2019.04.04 |
---|---|
2016년도 진료내역을 통한 상위 질병 확인해보기(2) (0) | 2019.03.14 |
학생 시험성적 t-test 및 아노바 (0) | 2019.02.14 |
공유자전거 데이터 분석(2) (0) | 2018.12.19 |
개인 의료비 예측하기 (0) | 2018.10.15 |