분석도구 R의 특징
- R은 무료 소프트웨어이면서도 고차원적인 계산이 가능하며 통계 분석과 시각화에 최적화된 환경을 통해 단순한 계산부터 복잡한 통계 기법까지를 폭넓게 다룰 수 있음
1) 그래픽 처리
- 상용 소프트웨어에 버금가는 상당한 수준의 그래프와 그림
- 그림의 용도와 역할에 맞게 적절한 그래프를 언제든지 쉽게 생산할 수 있음
- 매우 세부적인 부분까지 사용자가 직접 지정, 섬세한 작업을 수행할 수 있음
- 출판물로 사용해도 손색이 없을 정도의 고해상도 이미지를 생산함에도 그 처리 시간이 매우 빠름
2) 데이터 처리 및 계산 능력
- 벡터, 행렬, 배열, 데이터프레임, 리스트 등 다양한 형태의 데이터 구조 지원
- 다양한 데이터 형태의 분석이 용이함
- 복잡한 구조 내 개별 데이터에 접근하는 절차가 간단하므로 큰 데이터를 핸들링 하기도 간편함
3) 패키지
- 사용자들이 스스로 개발하는 새로운 함수들을 패키지의 형태로 내려 받아 사용할 수 있음
- 확장성 덕분에 다른 통계 프로그램에 비해 최신 이론이나 기법을 사용해보기가 쉬움
- 쉽게 사용할 수 없는 강력한 그래픽 처리를 원하는 경우에도 패키지의 형태를 적용하여 복잡하고 어려운 옵션이 적용된 고급 그래픽 기능들을 이용해 간편하게 처리할 수 있음
R 시작하기
- 패키지 이름을 알고 있는 경우 가장 빠르고 간편하게 패키지를 설치하는 방법
install.packages('Package Name')
- 설치된 패키지를 R 콘솔로 불러옴
library(Package Name)
- 도움말은 '?' 명령어나 'help' 명령어를 통해 불러올 수 있음
?par
help(par)
R의 데이터 구조
1) 벡터
- 하나의 스칼라값, 혹은 하나 이상의 스칼라 원소들을 갖는 단순한 형태의 집합
- 벡터 데이터 내에 들어갈 수 있는 원소는 숫자, 문자, 논리 연산자 등
- 숫자로 이루어진 벡터는 숫자 벡터가 되고, 문자로 이루어진 벡터는 문자 벡터
- R은 대소문자를 구분하여 인식하기 때문에 논리 연산자를 입력할 때는 반드시 모든 글자를 대문자로 기입
- 등호 '='의 경우, 우측의 값을 좌측의 변수에 할당한다는 의미로서 조금 더 직관적인 형태로 '<-'를 사용할 수도 있음
- 아래 코드는 모두 동일한 코드임
x <- c(1, 10, 24, 40)
x = c(1, 10, 24, 40)
- c 명령어를 이용해서 벡터와 벡터를 결합해 새로운 벡터를 형성할 수도 있음
x <- c(1, 10, 100)
y <- c("사과", "수박")
xy <- c(x, y)
# xy == "1" "10" "100" "사과" "수박"
- 숫자지만, 벡터 내에 하나라도 문자 데이터가 있으면 문자 벡터가 되므로, 숫자도 문자형으로 인식함
2) 행렬
- 행과 열을 갖는 M * N 형태의 직사각형에 데이터를 나열한 데이터 구조
- 행렬의 선언을 위해서 matrix를 사용함
mx = matrix(c(1, 2, 3, 4, 5, 6), ncol=2)
- matrix 명령어의 첫 번째 인수는 행렬에 들어가는 데이터들을 묶어놓은 벡터
- ncol 옵션으로 열(columns)의 수를 정하거나, nrow 옵션으로 행(rows)의 수를 정함
- 기본적으로 값들은 열을 우선 채우는 방향으로 입력된다.
- 만약 행을 우선 채우는 방향을 원하면 byrow=T 옵션을 추가하면 된다.
- rbind 와 cbind를 사용해 이미 만들어져 있는 벡터를 서로 합쳐 행렬로 만들 수 있음
mx = matrix(c(1,2,3,4,5,6), ncol=2)
r1 = c(10,10)
c1 = c(20,20,20)
rbind(mx, r1)
cbind(mx, c1)
- rbind, cbind는 벡터끼리 적용하면 행렬이 되지만, 데이터프레임끼리 적용하면 데이터프레임이 됨
3) 데이터프레임
- 행렬과 유사한 2차원 목록 데이터 구조
- 다루기가 쉽고 한 번에 많은 정보를 담을 수 있어서 R에서 가장 널리 사용됨
- 행렬과는 다르게 각 열이 서로 다른 데이터 타입을 가질 수 있기 때문에 데이터의 크기가 사용자가 다루기 수월함
- 명령어 data.frame을 이용하면 여러 개의 벡터를 하나의 데이터 프레임으로 합쳐 입력할 수 있다.
income = c(100, 200, 100, 200, 300)
car = c("kia", "hyundai", "kia", "toyota", "lexus")
marriage = c(FALSE, FALSE, FALSE, TRUE, TRUE)
mydat = data.frame(income, car, marriage)
댓글