[R] CONSORT flow chart 그리기

임상시험이라고 불리는 randomized controlled trial (RCT) 는 의학 연구에 있어서 높은 수준의 근거를 생산하는 연구 방법입니다. 그 결과를 보고하는 데 있어서도 철저한 기준에 따라야만 인정을 받을 수가 있습니다. CONSORT (CONsolidated Standards Of Reporting Trials) 는 그러한 기준을 제시하고 있는데, 많은 의학 학술지들이 이를 채택하고 있습니다. 그 중 RCT 에서 환자를 모집하고 연구를 진행하여 최종적으로 분석하기까지의 흐름을 보여주는 flow diagram 을 보여줘야만 하는데요, R 로 이를 그려 보고자 삽질에 착수해 보았습니다. 예시는 다음과 같습니다. CONSORT flow chart template 이와 같은 그림을 그려야만 하는데… 쉽지 않았습니다. 아주 만족스럽진 않지만 상당히 많은 시행착오 끝에 성공하였습니다. 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’ 과 정확히 일치하는 것을 하라고 그렇게 된

[R] Making publication quality table (HTML)

의학 논문을 쓸 때 테이블을 만드는 게 큰 일입니다. 주요 테이블들을 완성하면 사실 논문이 반쯤 써진 것이나 마찬가지이죠. 통계 분석을 하고 거기서 나온 숫자를 일일히 테이블에 손으로 옮겨 적는 일은 참 사람 지치게 하는 일입니다. 게다가, 일껏 테이블을 만들었는데 연구 대상 집단을 일부 빼고 또는 좀 더해서 다시 통계를 돌리게 되면 그 지루한 작업을 다시 반복해야 하는 일이 벌어지죠. 잘못 옮겨 적는 일도 비일비재하구요. 그래서 통계 패키지에서 바로 테이블을 만들어 줄 수 있으면 정말 환상적인데… 문제는 통계 패키지가 내 필요에 딱 맞는 테이블을 그렇게 출력해주지 않는다는 거죠. 그런데 R을 사용하게 되면서 이 막강한 유연성을 이용하여 거의 못할 것이 없게 되었습니다.

[R] selecting rows with NA

R 은 통계 분야에서 (특히 data science 쪽) 대세라고 할 수 있지요. 몇년 전부터 R을 익혀 데이터 분석에 이용하고 있는데, 많은 장점이 있으나 가끔 전혀 직관적이지 않는 결과를 내던지는 경우가 있어 멘붕했던 적이 여러번 있었습니다. 그 직관이란 것이 지극히 인간적인 것이고 사실은 R 이라는 프로그래밍 언어를 제대로 이해 못한 때문에 생기는 일들이지만, SAS나 Stata 와 같은 통계 패키지들을 다루면서는 겪지 않았던 괴상한 오류에 시달리는 것이 썩 기분 좋지는 않은 일이지요. 그 중 대표적인 것 중 하나가 NA 관련입니다. missing data 를 R 이 다루는 방법이 무척 엄격하달까요, 이걸 이해 못하면 정말 괴이한 에러에 머리를 쥐어 뜯게 됩니다. 다음과 같은 예를

[R] useful functions

몇가지 손수 만든 R function 들인데 조잡하지만 나름 편리하게 이용하고 있습니다. extr.num 은 데이터 cleaning 할 때 outlier 들을 보는 데 유용하고, qw 는 perl 에서 쓰는 함수 명을 그대로 따왔는데 정확히 똑같진 않지만 여러 text 들을 하나의 vector 로 묶을 때 편합니다. 안 그러면 따옴표랑 쉼표 찍느라고 무지 번거롭죠. 그 중 logistic() 같은 것은 써보면 제법 편리할 겁니다. R 에서 logistic regression 을 하려면 보시는 바와 같이 glm (…) 으로 한참 길게 써야 하는 번거로움에다가, 우선 보고 싶은 게 odds ratio 인데 그걸 안보여준다는…! 어쩌자고 이리 만들어 놨는지는 모르겠지만… logistic 은 제가 데이터 분석할 때 logistic regression 할 때마다