[ADP] R-기초(1) : 패키지 설치/R의 데이터 구조/외부 데이터 불러오기

2020. 7. 9. 14:46ADP | ADsP with R/Knowledge

 R언어와 사용법에 관한 게시글들은 "한국 데이터 산업진흥원"에서 출간한 국가공인 ADP/ADsP자격증을 위한 "데이터 분석 전문 가이드"에 서술된 수준에 한정지어 다루어 볼 것입니다.

 ADP필기 준비를 위한 R의 기본적인 문법과 패키지들을 학습을 목표로 합니다.   


1. 패키지(Package) 관련 함수

1. 패키지 설치와 사용을 위한 로드

install.packages("패키지 이름")
library(패키지 이름)

※ 여기서 패키지를 다운받을 때는 따옴표를 사용하지만, 사용하기 이전에 패키지를 로드할 때는 따옴표가 쓰이지 않는다.

 

2. R 패키지 도움말 

library(패키지 이름)                     # 패키지 로드를 해야 패키지 정보 확인가능

?패키지 이름                             # 방법1
help(패키지 이름)                        # 방법2

※ 위의 두 함수는 동일한 Help창을 띄운다. 

2. R의 데이터 구조

 

1.벡터

- 하나의 스칼라값, 또는 하나 이상의 스칼라 원소들을 갖는 단순한 형태의 집합을 의미

x = c(1,10,24,40)                          # 숫자형 벡터
y <- c("사과","바나나","오렌지")            # 문자형 벡터 
z <- c(TRUE,FALSE,TRUE)                     # 논리 연산자 벡터

※ 논리 연산자에서, TRUE는 1의 값, FALSE는 0의 값을 할당받는 것과 같다. 이는 수치적인 의미를 갖는 논리연산자의 문법을 가진다른 언어들과 동일하다. 

※ R에서 다른 언어와 마찬가지로 변수에 특정 값을 대입해줄 때, "="를 사용한다. 하지만, 다른 언어와 다르게 "<-"를 주로 사용하는 경향이 있다.

x = c(1,10,24,40)                          # 숫자형 벡터
y <- c("사과","바나나","오렌지")            # 문자형 벡터 
xy <- c(x,y)

 

※ 위의 경우처럼, c(벡터1,벡터2)로 변수에 값을 입력하면, 벡터가 연결된 새로운 벡터가 생성된다. 

※ 계속 사용한 것처럼, 벡터를 생성할 때, 직접입력하는 법으로 var = c(value1, value2 ,.., )를 사용한다.

 

2.행렬

- 행과 열을 갖는 m X n 형태의 직사각형에 데이터를 나열한 구조

mx = matrix(c(1,2,3,4,5,6), ncol = 2)
mx

 

※ matrix 명령어의 첫 번째 인수는 들어갈 데이터(벡터)로 들어간다. 그리고 형태를 조정하기 위해, <ncol = > or <nrow = >를 정해 matrix의 shape을 정할 수 있다.

그리고 행을 우선으로 채우는 방향(byrow = T), 열을 우선으로 채우는 방향(입력 X)를 통해 벡터 데이터가 행렬데이터로 변환될때 데이터의 형태를 정할 수 있다. 

 

mx = matrix(c(1,2,3,4,5,6), ncol = 2)
mx

r1 = c(10,10)
c1 = c(20,20,20)
rbind(mx,r1)

mx = matrix(c(1,2,3,4,5,6), ncol = 2)
mx

r1 = c(10,10)
c1 = c(20,20,20)
cbind(mx,c1)

※ rbind와 cbind를 이용해 기존 벡터를 합쳐 행렬로 만들 수 있다. rbind는 기존의 행렬에 행을 추가하는 형태로 데이터를 결합, cbind는 기존의 행렬에 열을 추가하는 형태로 데이터를 결합한다. 

3.데이터프레임

- 행렬과 유사한 2차원의 데이터 구조이고, 행렬과는 다르게 각 열이 서로 다른 데이터 타입을 가질 수 있어  사용자가 다루기가 쉽다.

income = c(100,200,150,300,900)
car = c("kia","hyundai","kia","toyota","lexus")
marriage = c(FALSE,FALSE,FALSE,TRUE,TRUE)
mydat = data.frame(income,car,marriage)
mydat

※ 각 column의 벡터들은 서로 다른 type을 가지고 있다. 이처럼 여러 형태의 데이터를 하나의 데이터 구조로 통합시킬 수 있으며 조작이 용이하다.

 

그 외 리스트와 배열과 같은 구조도 존재한다. 이는 다음 예시에 사용될때 언급하겠다. 

3. 외부 데이터 불러오기

1. .csv 파일 불러오기

data1 <- read.table("D:\\DATA\example.csv", header = T, sep = ",")
data2 <- read.csv("D:\\DATA\example.csv", header = T)

※ data1은 read.table함수를 통해서 csv 파일을 불러온다. 이때, header는 파일의 첫 줄을 변수명으로 지정하는 것이고, sep은 csv의 데이터가 쉽표로 구분된 파일임을 인지시켜준다. 

data2는 read.csv함수를 통해서 csv 파일을 불러온다. read.table과 다른 점은 sep를 별도 지정할 필요가 없다는 것이다. 

2. .txt 파일 불러오기

data3 <- read.table("D:\\DATA\\example.txt")

※ csv에서도 사용한 함수 read.table을 통해 txt파일을 불러올 수 있다. 다른점은 별도 구분자를 지정해주지 않으면 txt파일로 인식한다는 것이다. 

3. 엑셀파일 불러오기

library(RODBC)                                  # 패키지 로드
new <- odbcConnectExcel("c:\\data\\mydata")     # 엑셀파일 경로 입력
mydata <- sqlFetch(new, "Sheet1")               # 엑셀파일의 워크시트 이름 입력
close(new)

※ 엑셀파일을 직접 엑셀로 실행시킨 뒤 csv파일로 저장하여 csv파일을 읽을 수도 있다. 하지만 R에서 지원하는 RODBC라는 패키지를 통해서 직접 읽을 수도 있다.