Biostatistics
-
[R] 휴일 찾아주는 R function
데이터 분석 중 필요해서 특정 연도의 휴일을 찾아주는 R function 을 작성해 보았습니다. 엔간한 기능은 검색하면 이미 구현된 코드나 패키지를 찾을 수 있는 게 보통이지만 이건 찾기 어렵더라구요. 비슷한 게 있나 싶으면 한국은 또 잘 안되고… 할 수 없이 삽질 끝에 만들어 봤습니다. 앞에 있는 패키지들 다 설치되어 있어야 하구요, https://www.timeanddate.com/holidays/ 라는 사이트에서 조회하는 걸로 했습니다. 이 사이트 문닫으면 다시 코딩해야 ^^;;;; 조회하면 뜨는 웹페이지에서 휴일이 나온 테이블 부분을 읽어와서 data.frame 으로 만든 후 tibble 로 변경해서 (다루기 쉽게 하려고…) 약간의 가공을 거쳐서 제시합니다. 웹페이지 상에서는 정말 쉬는 날 아닌 기념일 등도 조회되는 데 휴일만 걸러낸 결과입니다. 5월 1일 노동절 같은 경우에는 쉬는 곳도 있고 아닌 곳도 있을텐데 이 함수의…
-
[R] CONSORT flow chart 그리기
임상시험이라고 불리는 randomized controlled trial (RCT) 는 의학 연구에 있어서 높은 수준의 근거를 생산하는 연구 방법입니다. 그 결과를 보고하는 데 있어서도 철저한 기준에 따라야만 인정을 받을 수가 있습니다. CONSORT (CONsolidated Standards Of Reporting Trials) 는 그러한 기준을 제시하고 있는데, 많은 의학 학술지들이 이를 채택하고 있습니다. 그 중 RCT 에서 환자를 모집하고 연구를 진행하여 최종적으로 분석하기까지의 흐름을 보여주는 flow diagram 을 보여줘야만 하는데요, R 로 이를 그려 보고자 삽질에 착수해 보았습니다. 예시는 다음과 같습니다. CONSORT flow chart template 이와 같은 그림을 그려야만 하는데… 쉽지 않았습니다. 아주 만족스럽진 않지만 상당히 많은 시행착오 끝에 성공하였습니다. DiagrammeR 이라는 패키지를 이용하였는데요, 설치되어 있지 않다면 물론 일단 install.packages("DiagrammeR") 이렇게 설치를 하셔야겠죠. DiagrammeR 패키지는 상당히 다양한 기능과…
-
[R] Unit conversion
의학 논문에서 SI unit 로 표기를 요구하는 일이 많습니다. 임상에서 흔히 사용하는 통상적인 단위에서 변환을 해야 하죠. 예를 들어 콜레스테롤 같은 것은 ‘mg/dL’ 로 임상에서 사용하는데, 이것을 SI unit 로 바꾸면 mmol/L 로 해줘야 합니다. 이런 변환을 해주는 게 뭐가 없을까… R 에는 워낙에 수많은 패키지가 이미 있기 때문에, ‘엔간하면’ 있습니다. 이것도 찾아보니 나오네요. > library(gdata) ## 없으면 물론 install.packages("gdata") 먼저 하고... > ConvertMedUnits(200, "cholesterol", to="SI", exact=TRUE) [1] 5.18 Cholesterol 200 mg/dL = 5.18 mmol/L 로 변환이 되었네요. exact 라는 옵션이 들어간 것은 그냥 cholesterol 만 주면 LDL-cholesterol, HDL-cholesterol 도 있기 때문에 ‘cholesterol’ 과 정확히 일치하는 것을 하라고 그렇게 된 겁니다. MedUnits 라는 데이터 프레임에서 변환하려는 측정 항목의 conversion factor…
-
[R] Making publication quality table (HTML)
의학 논문을 쓸 때 테이블을 만드는 게 큰 일입니다. 주요 테이블들을 완성하면 사실 논문이 반쯤 써진 것이나 마찬가지이죠. 통계 분석을 하고 거기서 나온 숫자를 일일히 테이블에 손으로 옮겨 적는 일은 참 사람 지치게 하는 일입니다. 게다가, 일껏 테이블을 만들었는데 연구 대상 집단을 일부 빼고 또는 좀 더해서 다시 통계를 돌리게 되면 그 지루한 작업을 다시 반복해야 하는 일이 벌어지죠. 잘못 옮겨 적는 일도 비일비재하구요. 그래서 통계 패키지에서 바로 테이블을 만들어 줄 수 있으면 정말 환상적인데… 문제는 통계 패키지가 내 필요에 딱 맞는 테이블을 그렇게 출력해주지 않는다는 거죠. 그런데 R을 사용하게 되면서 이 막강한 유연성을 이용하여 거의 못할 것이 없게 되었습니다. (물론 삽질은 필수!) 의학 학술지에서는 흔히 표가 맨 첫 행은…
-
[R] selecting rows with NA
R 은 통계 분야에서 (특히 data science 쪽) 대세라고 할 수 있지요. 몇년 전부터 R을 익혀 데이터 분석에 이용하고 있는데, 많은 장점이 있으나 가끔 전혀 직관적이지 않는 결과를 내던지는 경우가 있어 멘붕했던 적이 여러번 있었습니다. 그 직관이란 것이 지극히 인간적인 것이고 사실은 R 이라는 프로그래밍 언어를 제대로 이해 못한 때문에 생기는 일들이지만, SAS나 Stata 와 같은 통계 패키지들을 다루면서는 겪지 않았던 괴상한 오류에 시달리는 것이 썩 기분 좋지는 않은 일이지요. 그 중 대표적인 것 중 하나가 NA 관련입니다. missing data 를 R 이 다루는 방법이 무척 엄격하달까요, 이걸 이해 못하면 정말 괴이한 에러에 머리를 쥐어 뜯게 됩니다. 다음과 같은 예를 보시지요. x2 컬럼에 NA 가 박혀 있습니다. > df df…