본문 바로가기

R/R을 이용한 데이터 처리&분석 실무

(39)
흐름 제어(조건문과 반복문) 이 절에서는 프로그래밍의 필수 요소가 되는 조건문과 반복문(if, for, while, repeat)에 대해서 알아본다. 문법은 대부분의 언어와 유사하므로 어렵지 않게 익힐 수 있을것이다. switch 문도 존재하지만 잘 사용하지 않으며, 대신 조건문을 많이 사용한다. if 먼저 조건에 따라 코드의 수행 여부를 결정하는 if 문에 대해 살펴본다. 다음은 if 문의 문법 구조를 정리한 표다. 문법 의미 if (cond) {cond가 참일 때 실행할 문장} else {cond가 거짓일 때 실행할 문장} 조건 cond가 참, 거짓인 경우에 따라 {}블록을 실행한다. 필요한 경우 else 블록을 지정할 수 있다. 다수의 TRUE, FALSE 데이터를 한 번에 처리한다면 ifelse() 함수를 고려할 수 있다. ..
타입 판별, 타입변환 타입판별 데이터를 처리하기 위해 여러 함수를 호출하다 보면 반환된 결과의 타입이 무엇인지 분명하지 않을 때가 많다. 이 경우 다음 함수들을 사용하여 데이터 타입을 손쉽게 판단할 수 있다. 함수 의미 class(x) 객체 x의 클래스 str(x) 객체 x의 내부 구조 is.factor(x) 주어진 객체 x가 팩터인가 is.numeric(x) 주어진 객체 x가 숫자를 저장한 벡터인가 is.character(x) 주어진 객체 x가 문자열을 저장한 벡터인가 is.matrix(x) 주어진 객체 x가 행렬인가 is.array(x) 주어진 객체 x가 배열인가 is.data.frame(x) 주어진 객체 x가 데이터 프레임인가 다음은 벡터, 행렬, 데이터 프레임에 class()를 적용하여 클래스를 구하는 예를 보여준다...
데이터 프레임 데이터 프레임(Data Frame)은 처리할 데이터를 마치 엑셀의 스프레드시트와 같이 표 형태로 정리한 모습을 하고있다. 데이터 프레임의 각 열에는 관측값의 이름이 저장되고 각 행에는 매 관측 단위마다 실제 얻어진 값이 저장된다. 예를 들어, 다음 성적 데이터와 같은 모습이 데이터 프레임에 저장되는 데이터의 전형적인 예이다. 성명 국어 영어 홍길동 80 94 김길동 97 100 박길동 85 97 이처럼 자연스럽게 데이터를 표현하는 데이터 타입이기 때문에 데이터 프레임은 R에서 가장 중한 데이터 타입이며, 많은 R함수에서 인자로 데이터 프레임을 받는다. 데이터 프레임 생성 아래에 데이터 프레임 관련 함수를 나열했다. -data.frame : 데이터 프레임을 생성한다. data.frame( #value 또는..
리스트 자료 구조 책에서 리스트(list)는 배열과 비교할 때 데이터를 중간 중간에 삽입하는 데 유리한 구조로 설명한다. 물론 그러한 장점은 동일하지만 R에서 리스트는 데이터를 접근한다는 관점에서 다른 언어의 해시 테이블 또는 딕셔너리로 종종 설명된다. 즉, 리스트는 '(키, 값)' 형태의 데이터를 담는 연관 배열(Associative Array)이다. 또 다른 리스트의 특징은 벡터와 달리 값이 서로 다른 데이터 타입을 담을 수 있다는 점이다. 따라서 "이름"이라는 키에 "홍길동"이라는 문자열 값을 저장하고, "성적"이라는 키에 95라는 숫자 값을 지정할 수 있다. 리스트 생성 리스트는 list()함수를 사용해 생성한다. -list : 리스트 객체를 생성한다. list(key1=value1, key2=value..
벡터 벡터(vector)는 다른 프로그래밍 언어에서 흔히 접하는 배열의 개념으로, 한 가지 스칼라 데이터 타입의 데이터를 저장할 수 있다. 예를 들어, 숫자만 저장하는 배열, 문자열만 저장하는 배열이 벡터에 해당한다. R의 벡터는 슬라이스(slice)를 제공한다. 슬라이스란 배열의 일부를 잘라낸 뒤 이를 또 다시 배열처럼 다루는 개념을 뜻한다. 또한, 벡터의 각 셀에는 이름을 부여할 수 있다. 따라서 벡터에 저장된 요소들을 색인을 사용하여 접근하는 것뿐 아니라 이름을 사용해서도 접근할 수 있다. 이런 특징을 사용하면 데이터를 좀 더 의미 있는 형태로 저장할 수 있다. 벡터 생성 벡터는c()를 사용해 생성하고, names()를 사용해 이름을 부여할 수 있다. 아래에 벡터 관련 함수를 정리했따. -c : 주어진 ..
스칼라 이 절에서는 스칼라(scalar) 데이터 타입에 관해 살펴본다. 스칼라란 단일 차원의 값을 뜻하는 것으로 숫자 1,2,3,...을 예로 들 수 있다. 반면 좌표 평면 위에 있는 점인 (1,2)는 2차원 값이므로 이 절에서 설명하는 스칼라에 해당하지 않는다. R에서 데이터 타입의 기본은 벡터(vector)다. 따라서 스칼라 데이터는 길이가 1인 벡터(즉, 길이가 1인 배열)와 같은 것으로 볼 수 있다. 숫자 정수, 부동소수 등을 숫자형 데이터 타입으로 지원한다. 다음은 a에 3, b에 4.5를 저장한 뒤 c에 a와 b의 합을 저장하고, c의 값을 출력한 예다. 값을 출력하려면 print() 함수를 다른 언어처럼 호출해 쓰거나 마지막 행에 보인 예와 같이 print() 없이 변수명을 그대로 입력하면 된다. ..
변수 데이터 타입 설명에 앞서, 값을 저장하고 추출하는 방법을 알아보기 위해 R에서 사용하는 변수에 대해서 살펴보자. 변수 이름 규칙 R의 변수명은 알파벳, 숫자, _(언더스코어), .(마침표)로구성되며, -(하이픈)은 사용할 수 없다. 첫 글자는 알파벳 또는, . 으로 시작해야 한다. 만약 . 으로 시작한다면 . 뒤에 숫자가 올 수 없다. 예를 들어, 다음은 모두 올바른 변수명이다. a b a1 a2 .x 다음은 올바르지 않는 변수명이다. 2a .2 a-b 한 가지 흥미로운 사실은 R 1.9.0 이전에는 변수명에 _를 사용할 수 없었다는 점이다. 이런 역사적인 이유로 다른 언어에서 흔히 _를 사용할 만한 상황에서 R은 .을 사용한다. 예를 들어, training_data, validation_data 같은 ..