學人2013. 6. 25. 01:00

SAS의 압제에 대항한다는 착각(?)을 하며 독립운동한다는 기분으로 R노가다를 하는 중이었다. 열시가 조금 넘었을까. 갑자기 전화벨이 울렸다. 박사논문을 쓰고 있는 H선배였다. 그는 간단한 엑셀 함수에 대해 물었다. 결과물은 두 가지가 나와야 했다. 대강 무슨 말인지는 알아듣겠는데, 원래 이런 일은 엑셀 쉬트를 직접 붙들어 봐야 이해도, 실행도 빠르다. 메일주소로 부쳐주십사 했다. 


엑셀 파일을 열어보았다. 서로 다른 광역지자체와 기초자치단체마다 다른 코드를 부여하는 일이었다. 수도없이 해 본 일이다. 정렬이 되어있다는 걸 가정하고 윗칸과 아랫칸이 같냐 다르냐는 if문을 쓰면 될 거 같았다. 중요한 점은 광역지자체와 기초자지단체 두 곳을 동시에 비교해야 한다는 점이었다. 약간의 삽질을 거쳐, 15분에 하나를 풀고, 5분을 더 생각해 둘을 모두 풀었다. H선배에게 답신을 보내고, 선배의 작업을 조금 더 들여다보았다. 함수를 보고 난 경악했다. 광역지자체의 수 만큼 조건문을 짜서 코드를 부여하고 있었다. 정렬된 상태라 가정을 하고 if 문을 쓰지 않다 하더라도, vlookup을 쓰면 금방 해결될 일이었다. 그런데 왠 이 쌩 노가다를...


그런데 그런 노가다가 나쁜 일이만일까. 돌이켜 생각해보면, 내가 윗칸과 아랫칸이 같냐 다르냐는 if문을 활용해서 더미변수 만들어내고, 서로 다른 종류 걸러내고, 그런 테크닉을 내가 몸으로 익혔던 이유는... 내가 엑셀 기능을 잘 몰라서였다. 이건 진짜다. 필터도, 피벗 테이블도 모르던 시절, 함수, 특히 vlookup과 if만을 사용해서 필터와 피벗 테이블에 준하는 기능을 만들어 써야 했던 때, 어떻게든 머리 굴려 뽑아내며 익힌 테크닉들이었다. 핵심은 여기에 있다. 적당한 자원의 제약이 실력의 향상을 이끈다는 것. 


독립운동하는 마음으로 R 공부를 다시 시작했다. 코드 하나하나 쓸 때 마다, 삽질의 연속이다. 괴로운 일이긴 하나 필요한 일이다. 내가 코드를 잘 모르니까 일단은 무한반복이 필요하기도 하고, 제한된 지식의 경계 내에서 오만 조합을 다 해 보는 것이, 조금이라도 실력을 늘리는 길이다. 


여기다 쓰면서 든 생각. 결국 제한된 함수의 여러 조합을 시도하면서 자연스럽게 코딩 실력이 늘어난 건데, 이게 왠지 진화와 돌연변이에 의해 설명될 수도 있을 듯 하다. 거의 모든 조합을 시도해 보면, 두드러지는 거 한두놈씩은 나오게 되어있으니까. 스키마가 제대로 잡혀 있다면 그 속도는 더 빨라지겠지만. 


오늘의 최고 소득. 이번주 행정학회 발표 논문에 들어갈 데이터를 그대로 재현해 보았던 것. 막대그래프와 신뢰구간의 조합이 R에서 가능하다는 점. 좌우간 지금은 노가다를 밀어부칠때다. =)

Posted by mannerist