본문 바로가기

[R프로그래밍] 데이터전처리:: R 에서 package 불러올때 tip 오늘의 내용은 아주 기본적인 내용입니다. R 에서 package 를 불러올때, 보통 library() 혹은 require() 사용하게 됩니다. '패키지를 불러오는 중입니다....' 등등의 여러 메시지들이 console 창에 불러지는데요. 이 보기 싫은 메시지들을 출력되지 않게 하는 방법을 알려드리겠습니다. suppressMessages({ library(mice) library(VIM) library(Amelia) library(missForest) library(Hmisc) }) 핵심은 위의 supressMessages() 명령어가 되겠습니다. 사실 별거 아닌 내용이긴 한데 불러오는 package 가 많아질수록... 이게 불편해지는 경우가 생깁니다 그럴때 사용하시면 쾌적하게 R 을 사용하실 수 있겠죠?..
[통계] 데이터 분석 시 로그 변환, log transformation 이 꼭 필요할까 ? 통계 공부를 하다보면 어느 순간 드는 의문 중의 하나입니다. 논문을 읽다보면 데이터 전처리 관련하여 '변수가 정규분포를 하지 않아서 log-transformation (로그변환) 을 했다.' 는 구절을 종종 찾아볼 수가 있습니다. 저도 공부하다가 궁금해서 몇번 찾아본 적이 있었습니다만, 명쾌한 답은 얻지 못하였었습니다. 아직까지도 정확한 답은 찾지 못하였지만... 회귀를 포함한 여러가지 통계에 대한 공부를 하다보니까, 지금까지의 제 지식으로는 특별한 경우를 제외하고는 굳이 할 필요가 없다고 느껴집니다. 여러 articles 도 있지만, 그중 citation 도 좀 많이 되어 있는 흥미로운 논문이 있어서 소개해드리고자 합니다. 시간이 없으시다면, summary 부분만 읽어보셔도 충분할 것 같습니다. htt..
[통계] 결측값의 종류와 처리 방법 오늘의 주제는 통계 분석을 하는 사람의 가장 큰 고민거리 중 하나인 결측값에 대한 내용입니다. R에서 실제로 결측값을 처리하는 방법에 대한 포스팅은 추후에 한번 하도록 하겠으며, 오늘은 결측값에 대한 기본적인 포스팅을 해보고자 합니다. 너무 복잡하면 읽기 싫으시니, 개념을 잡는 방식으로 간략히 포스팅하겠습니다. 1. 결측값, NA 의 종류 MCAR, Missing completely at random MAR, Missing at random MNAR, Missing not at random 위의 3가지로 나눌 수 있습니다. 종류에 따라 갖게 되는 성격이 다르기 때문에, 데이터 전처리에서 어떠한 방식으로 결측값을 처리할지 결정하기 위해서는 우선 이 종류를 파악해야합니다. MCAR : 결측값의 발생이 다른 ..
의학 통계는 과연 기존의 통계들과 다른걸까... 나는 통계전문가도 아니고 통계학을 전공으로 공부한 사람도 아니다. 다만, 논문 작성을 하다보니 통계를 어쩔 수 없이 다루게 되었고, 그에 대한 공부를 시작하였다. 근데 한가지 재밌는건 의학통계라는 이유로, 수 많은 사람들이... 심지어 예방의학과라는 타이틀과 통계를 공부했다고 자부하는 사람들이 하는 말을 들어보면... 의학통계는 binary 변수가 많고 데이터의 태생적 한계때문에 기존의 통계와는 다를 수 밖에 없다고들 말한다. 위의 말의 앞부분에는 어느정도 동의를 하지만, 그렇다고 그 뒤의 말에는 동의할 수는 없다. 정말 의학데이터만 다른 데이터들과는 정말 다른 데이터 특성을 갖는 것이라고 말할 수 있나? 적어도 내가 공부한 범위내에서는 절대 그렇지 않다. 그리고 만일, 저런 특성을 갖는다고 해서 통계분..
[R프로그래밍] 데이터전처리 unique:: 중복값처리 R Basic::unique 함수는 많이들 사용을 해보셨을 겁니다. unique 함수 내에서 아주 유용한 기능이 있어서 하나 소개해드릴까 싶습니다. 그 기능은 다름아닌, fromLast 인데요. 이 기능은 unique 함수로 값들을 추릴때, 중복된 값들이 여러개 있으면, 가장 마지막 행만 남기고 없애는 기능입니다. 이 기능을 아주 약간만 응용하면 last visit 이나 first visit 때의 값만을 남기고 모든 중복 측정값을 제거할 수 있습니다. a 라는 data.frame 이 있을 때. visit time 을 vt 라는 변수에 저장해 두었다고 하고, 식별자는 id 라고 가정을 하고 아래의 코드를 입력한다면 어떠한 결과가 나올까요? a
[R프로그래밍] 데이터전처리 intersect:: 벡터에서 중복되는 값 찾기 대규모 데이터들을 처리 하다보면, 여러개의 데이터프레임들을 병합해야하는 경우가 많습니다. 특히나, 의학쪽에서는 혈액검사 관련된 부분들의 항목들의 이름들이 겹치는 부분이 있다보니, 각각의 데이터프레임들을 병합하다보면 중복되는 값들이 생겨버리는 경우가 있습니다. 이럴 경우 변수명들이 겹치는지 확인하기 위해 사용하는 방법이 있습니다. 바로 basic::intersect 함수입니다. 우선 변수명들을 unique 함수로 각각의 함수에서 추출하고, 각각을 독립된 벡터로 지정을 해줍니다. 예를 들어, a 와 b 벡터로 지정을 해주었다면, intersect(a,b) 이렇게 해주시면 중복된 값을 바로 찾아줍니다. 그러면 그 항목만 review 를 해주시면 되겠죠? * 도움이 되셨다면, '공감' 버튼 부탁드립니다^^
[R프로그래밍] ggplot2:: 여러개의 ggsurvplot 합치기 / arrange multiple ggsurvplots ggsurvplot 정말 좋은 graphic tool 입니다. 논문 투고를 준비하다보면... ggsurvplot 을 이용해서 그린 figure 를 하나의 figure 로 합치고 싶을 때가 있습니다. 이럴때 쓰는 코드를 알려드리겠습니다. splots
[SQL문법] Join:: WHERE 과 ON 의 차이 2개의 data를 병합할때 쓰이는 Join 구문에서 조건을 넣는 방식이죠. WHERE 과 ON. 이 2가지의 차이를 간단히 알아보겠습니다. aa 라는 dataframe , bb라는 dataframe 이 있다고 가정을 해보겠습니다. 그리고 aa 와 bb 는 공통의 key 를 key 라고 갖는다고 합시다. 그리고 bb 는 game 이라는 항목이 더 있습니다. 아래의 명령문을 살펴보면 1) SELECT * FROM aa LEFT OUTER JOIN bb ON aa.key= bb.key WHERE bb.game= 'hearthstone'; 2) SELECT * FROM aa LEFT OUTER JOIN bb ON ( aa.key= bb.key AND bb.game = 'hearthstone' ); 힘의 차이가 ..