전체 글 37

SAS에서 원하는 문자열에 대해서 loop문 적용하기

일반 프로그래밍에서처럼 for문 사용에 익숙한 저에게 SAS에서의 for문은 다소 어렵기만 하네요. 특히 원하는 문자열에 대해서 for문을 돌면서 무언가를 하고 싶은데.. 쉽지 않더라구요. int 형의 경우에는 다소 쉬운데 말이죠. 그래서 이래저래 찾다가 다음과 같은 팁을 발견하여 기록해두고자 합니다. %LET my_list = A B C; %LET length = %sysfunc(countw(&my_list)); %DO i=1 %TO &length; %LET element = %scan(&my_list, &i); %PUT &element; %END; 위 코드를 살펴보면, 일단 my_list라는 변수를 선언하고, 해당 변수의 길이를 확인하여 loop를 돌리는 것을 알 수 있습니다.

데이터 분석 방법론 - (1) 데이터마트에서 데이터셋까지

데이터 분석을 하다보면 일련의 방법론이 필요하다는 생각이 듭니다. 일부 동료 분석가들은 "너가 컨설턴트 출신이라 그래." 라는 식으로 방법론에 대해 회의적인 의견을 보이기도 하지만, 그래도 저는 방법론이 있으면 좋겠다는 생각입니다. 그래서 구글링을 해보니 분석 방법론을 정리한 글들을 많이 볼 수 있었고, 방법론에서 더 나아가 데이터 분석 프로세스에서 확인해야할 Check List를 정리해놓은 사이트도 볼 수 있었습니다. 이런 글들에 무임승차로 편승하여 그 방법대로 따라서 분석을 진행하다가 결국은 직접 나만의 분석 프로세스를 정리하여야 내재화될거 같아 정리해두려 합니다. 다음에 기술하는 데이터 분석 절차는 특별할 거는 없이 상식적 수준에서 정리한 것이며, 앞으로 계속 갱신할 예정입니다. 데이터 분석 과정1..

데이터 타입 비교 - Vectors,Matrices, Arrays, Lists and Data Frames

R에서 사용하는 데이터 타입은 크게 Vectors, Matrices, Arrays, Lists and Data Frames 이렇게 5개로 구분해볼 수 있습니다. 이 타입의 구분은 R를 다룰 때 중요하므로, 한번 정리해보도록 하겠습니다. 1. 백터(Vector) 어느 자료를 보다보니, 벡터에 대해 다음과 같이 정의해놓았는데, 개인적으로 가장 잘 와닿는 정의라서 그대로 인용해보려고 합니다. Vector is a collection of ordered homogeneous elements. 이는 "백터는 정렬된 동질적 요소의 집합"이라고 번역할 수 있습니다. 빨간색으로 강조된 것 중에서 "동질"이라는 것에 유의할 필요가 있습니다. 벡터는 숫자형과 문자형이 서로 섞여서 저장, 생성될 수 없습니다. 다음의 예제를..

for문을 대체할 수 있는 apply 함수

R은 for문을 사용해서 반복하기보다는 apply를 사용하는 것이 속도 측면에서 좀더 우월한 결과를 보이는 경우가 있습니다. 그래서 일부 분석가들은 R에서 apply함수를 가장 중요한 함수라고 하기도 합니다. 그러기에 apply함수를 토대로 파생된 함수들도 많습니다. 예를 들자면, lapply, sapply, tapply, vapply, mapply 등이 있습니다. 이들 함수에 대해 먼저 기본적 사항을 정리해보겠습니다. 표로 정리하면 다음과 같습니다. 함수명 대상 데이터 타입 apply Matrices, Arrays lapply, sapply Lists tapply Ragged arrays as vectors 1. apply 함수 apply함수의 대상이 되는 타입은 행렬 또는 배열입니다. 하지만, dat..

데이터 반죽을 위한 R 라이브러리 - dplyr, tidyr

R에는 매우 다양한 라이브러리들이 있습니다. 그리고 라이브러리들이 서로 유사한 기능을 하는 경우도 많습니다. 그래서 항상 어느 라이브러리를 사용해야 좋은지 고민이 되는 경우가 많습니다. 데이터를 다루기 위한 라이브러리도 그러합니다. 별도 라이브러리 없이 기본 R 명령어로도 잘 사용하는 분들도 계시고, 데이터를 다루는 라이브러리 중 "data.table"를 사용하는 분들도 있습니다. 저는 개인적으로 처음에 dplyr, tidyr로 데이터를 다루기 시작하여 이 두 개 라이브러리를 사용합니다. 그래서 이 라이브러리를 통해 데이터를 다루는 것에 대해 정리하고자 합니다. 1. 특정 컬럼값만 가져오기 : Select SQL 명령어를 아시는 분들이면 이미 익숙한 SELECT가 dplyr에도 있습니다. 동일하게 sel..

데이터 분석의 시작은 데이터 반죽하기

데이터 분석 업무를 수행하면서, 가장 큰 고민이 "데이터 분석의 기본이 무엇일까?"였습니다. 그리고, 스스로 가장 기본은 데이터를 원하는대로 만들고, 조작할 수 있는 데이터 반죽 능력이라고 결정을 내렸습니다. 정말 데이터 반죽 능력이 중요해? 라고 되짚어본다면, 전통적으로 통계 분석 툴의 강자인 SAS의 구성을 보더라도 데이터 반죽이 기본이라는 것을 알 수 있습니다. SAS는 크게 Data 부분과 Proc 부분으로 구성되어 데이터를 분석하는 것이 기본 프레임입니다. 그리고 항상 데이터 분석 Procedure를 호출하는 Proc부분 앞에 Data 부분이 있습니다. 그리고, Data부분에서 원하는 형태로 데이터를 가공한 후에야 비로소 Proc를 통해 데이터 분석이 가능합니다. 그만큼 데이터 분석 전에 데이터..

Vim Airline에 Trailing이 보인다면?

Vim Plugin 중 Airline를 사용하면, 다양한 정보를 우측 하단에 보여주게 된다.처음에는 별 필요없다고 느껴졌던 정보들이 개발을 하다보면 매우 소중하게 느껴진다. ㅎㅎ Mixed-Indent 등 tab과 공백이 서로 섞여있는 라인수도 보여주는데, 해당 건은 :retab를 통해 해결이 가능하다 (사용팁 참조)그런데, 간혹 Trailing이라는게 보인다. 이것은 해당 라인 뒤에 무의미한 공백이 들어가 있음을 알려주는 것이다.그래서 이 건은 무의미한 공백을 제거해주면 해결된다. 무의미한 공백을 찾아서 제거하는 방법은 %s/\s\+$//gc 이 명령어를 활용하면 된다.

Cloudera Impala에서의 Date and Time 함수 정리

SQL 내장 함수 중에서 Date와 Time가 가장 중요하다고 생각이 되요. SQL에서 데이터를 가져올 때, "언제언제 이후 데이터를 뽑아주세요"라는 식으로 요청받기 때문이예요. 그래서 최근 Hadoop을 Impala를 통해 데이터를 다루기 시작하면서 Date와 Time 관련 함수를 정리해보았습니다. 주로 활용한 URL은 Cloudera 매뉴얼(https://www.cloudera.com/documentation/enterprise/latest/topics/impala_datetime_functions.html)입니다. 위 함수 중에서 FROM_UNIXTIME과 UNIX_TIMESTAMP가 가장 유용하다고 생각됩니다. 추가로, Timestam를 String으로 만들 때, 원하는 형태로 입력하고 출력하고 ..

SQL Format Rule 만들기

SQL을 익히고 코딩을 하다보니, 가독성이 좋은 SQL를 위한 룰을 수립하는 것이 좋을거 같다는 생각이 들었어요. 인터넷 상에서 관련 글을 검색하면서 Rule을 만들어 정리해보고자 합니다. 현 시점에 수립한 Template입니다. 일단 SELECT 구문부터 시작하려고 합니다. /*********************************************************** -- Name : Template.sql -- Purpose/Desc : -- Required grants : CRUD / RU -- Source tables : -- Called/Used by : ************************************************************/ SELECT co..

반응형