빅데이터분석준전문가자격증

ADsP. PART.3 - 데이터 분석 - R의 기초 -1

theblack0 2022. 6. 23. 14:53
반응형

1.프로그램 설치

  1.R 설치

     https://www.r-project.org/

  2.R 스튜디오 설치

     https://rstudio.com/

 

2.R의 특징

오픈소스, 다양한 운영체제에서 사용할 수 있음
우수한 데이터 핸들링 : 텍스트, CSV, 엑셀, SAS, SPSS, DB 등 지원 
인터프리터  
우수한 그래픽 기능 : 2D, 3D, 동적 그래프 지원
다양한 형태의 데이터 구조를 지원하므로 분석 대응력이 좋음
 
열우선 배열  
Index 번호는 1부터 시작    
1:5는 1부터 5까지의 수를 의미함

3.R의 연산자 우선순위

연산자 우선순위 의미
^ , ** 지수 2^4
+ , - 양수, 음수 부호 +4, -2
: 수열 생성 1:5
%any% 특수 연산자 %/% : ahrt, %% : 나머지,  %*% : 행렬곱
* , / 곱셈 ,  나눗셈 2*4, 10/3
+ , - 덧셈, 뺄셈 4+2 , 5-2
== 같음 비교 3==5 #FALSE
!= 다름 비교 3!=5 #TRUE
>= , <= , < , > 이상 , 이하, 작다 , 크다 3>=5 , 3<=5 #FALSE, TRUE
! 논리부정 !(3==5)
&,&& 논리AND & : 논리 연산 데이터가 하나 이상인 경우 사용
&& : 논리 연산 데이터가 하나인 경우 사용
|,|| 논리OR 논리 AND와 같은 규칙
~ 식(formula) 종속변수1+종속변수2+.................~독립변수1+독립변수2................
-> , ->> 왼쪽 값을 오른쪽으로 대입 3 -> a , 3 ->> a
= 오른쪽 값을 왼쪽으로 대입 a = 3
<- , <<- a <- 3, a <<- 3

 

4.R의 데이터형(=타입)

 - R의 데이터 형은 기본형,구조형,복합형으로 나눌 수 있으며,Special Values가 존재함

 

R의 데이터 구조 - Vector

  -vector - c함수로 생성

  • 하나 이상의 스칼라(=길이가 1인 백터)원소들을 갖는 단순한 집합
  • 숫자,문자,논리형 데이터를 원소(Element)로 사용할 수 있음
  • 동일한 자료형을 갖는 값들의 집합으로 하나의 열(Column)로 구성됨
  • 백터 생성함수 : c(value1, value2,..........),seq(from, to, by), rep(x, times, each)

 - vector - sep함수로 생성

  • sep(from=1, to=1, by, length)
  • ex)v1 = seq(1,5)
  • ex)v2 = seq(1,10,2)
  • ex)v3 = seq(1,10,length=3)
  • ex)v4 = seq(1,10,length=4)
  • ex)v5 = seq(1,3,length=5)
  • from부터 to까지 by씩 건너뛰는 수로 구성된 백터 생성
  • length를 사용하는 경우 from 부터 to까지 수 중 length개 만큼의 수를 원소로 하며 원소들 간 균등 간격을 갖음

 

-vector - rep 함수로 생성

  • rep(x,time,each)
  • v1 = rep(1,5)
  • v2 = rep(1,time=5)
  • v3 = rep(3:5, time=3)
  • v4 = rep(3:5, each=2)
  • v5 = rep(seq(1,5,2),2)
  • x : 스칼라 또는 백터 등을 사용할 수 있음
  • time : x가 백터일 경우 처음부터 끝까지를 time에 지정된 수 만큼 반복
  • each : x가 백터일 경우 각 원소를 each에 지정된 수 만큼 반복

vector의 인덱싱

  - 대괄호를 사용하며, 위치 index를 사용하거나 조건문, 순열 등을 사용할 수 있음

v[n]  vector의 n번째 원소 반환, n=1부터 시작
v[-n] vector에서 n번쩨 원소를 제외한 나머지 원소들을 반환
v[조건] 조건을 만족하는 원소들 반환, 조건의 결과는TRUE/FALSE로 구성
v[start:end] start번째 원소부터 end번째 원소까지 반환

 

R의 데이터 구조 -  matrix

matrix(행렬)

  • 데이터의 형태가 2차원으로 행(row)과 열(column)로 구성
  • 하나의 데이터 유형만 가능, 역행렬은 solve()로 구함

행렬 생성함수

  • matrix(data=NA,nrow=1,ncol=1,byrow=FALSE, dimnames=NULL)
  • rbind(vectors or matrices), cbind(vectors or matrices)

 

matrix관련함수, 인덱싱

 - matrix는 2차원이므로 인덱싱에서 행,열에 대한구분이 필요함

dim(x),dim(x) <-- 행렬 차원 확인, 부여  
nrow(x),ncol(x) 행의 수, 열의 수  
m[nrow], m[ncol] nrow,ncol 위치의 원소 추출  
m[nrow,], m[-row,] 특정 행 접근  
m[,ncol], m[,-ncol] 특정 열 접근  
dimnames(m) , dimnames(m)  <-- 각 차원의 이름 확인,부여  
rownames(m) , rownames(m) <-- 각 행의 이름 확인, 부여  
colnames(m), colnames(m) <-- 각 열의 이름 확인.부여  
t(m) 전치행렬 반환  
diag(m) 대각원소 반환  

 

R의 데이터 구조 - data.frame

 - data.frame

  • 엑셀의 WorkSheet와 같은 구조의 2차원 데이터
  • '여러가지 데이터 유형'을 가질 수 있음, 백터 별로 다른 데이터 유형 가능
  • 백터가 모여 데이터 프레임을 구성함

 - data.framr 생성함수

  • data.frame(vectors or matrices, stringsAsFactors)  백터의 길이는 모두 같아야 함
  • data.frame(변수명=백터,................,stringAsFactors)  stringAsFactors를 TRUE로 지정하면 문자열을 factor형으로 저장함

data.frame 인덱싱

df[nrow,ncol] 특정 행, 열의 원소 추출, nrow, ncol --> Scalar
df[nrow,] 특정 행 추출, data.frame반환
df[,ncol] 특정 열 추출, vector반환
df[ncol] 특정 열 추출, data.frame반환
df[[ncol]] 특정 열 추출, vector반환
df[vector,vector]
df[cevtor,]
df[,vector]
해당 vector목록에 해당하는 data.frame 반환
vector : 2개 이사으이 원소를 갖는 vector
fd$name 특정 열 추출,vector반환
df[-ncol] 특정 열 제외하고 반환, vector반환

 

R의 데이터 구조 - list

  -list

  • 서로 다른 데이터 타입을 담을 수 있음
  • 리스트에 저장된 데이터를 index 또는 key를 사용해 접근함
  • 생성함수 : list(key=value,key=value.......)

외부 데이터 사용

 - 작업환경 설정

  • setwd('디렉토리 이름')
  • getwd() : 현재 작업 디렉터리 이름 반환

CSV파일 불러오기, 저장하기

  • read.csv('파일이름',fileEncoding=UTF-8-BOM')
  • write.csv('파일이름',row.names=FALSE)
  • dataframe = read.csv('data/easySample.csv',fileEncoding="UTF-8-BOM")
  • write.csv(dataframe,'data/mySample.csv',row.names=FALSE)
  • write.csv(dataframe,'data/mySample_wr.csv')

txt파일 불러오기

  • read.table('파일이름.txt',sep=구분자,col.names=컬럼이름목록)
  • cname <-c('ID','name','birth','dept','english','japanese','chinese')
  • ex)dataframe = read.table('data/easySample.txt', ',', col.names=cname)
  • print(dataframe)

사용하는 객체를 저장하고 불러오기

  • save(객체.file="파일이름.Rdata")
  • load("파일이름.Rdata")
  • ex)dataframe = read.csv('data/mySample.csv')
  • save(dataframe,file='data/myObject1.Rdata')
  • load('data/myObject1.Rdata')
  • print(dataframe)

data.frame핸들링

새로운 변수 만들기   데이터프레임$변수명 또는 데이터프레임['변수명'] <-추가할 데이터 백터
조건으로 선택   subset(x,subset=(조건))  sebset=생략가능
목록으로 선택   subset(x,subset=(조건),select=열/열 목록)
열,열 목록 제거   subset(x,subset=(조건),select=-열/열 목록)
열 이름 바꾸기   colnames(x) <-, colnames(x)[index] <--

 

R의 데이터셋 사용

head(x,n) 데이터 셋 처음 여셧개 반환 n지정 시 해당 개수만큼 반환
tail(x,n) 데이터 셋 마지막 여섯개 반환 n지정 시 해당 개수만큼 반환
View(x) 창을 열고 엑셀과 유사한 형태로 데이터셋을 보여줌
summary(x) 데이터 셋을 구성하는 항목의 기초 통계량을 보여줌
(최솟값,1사분위수,중간값,평균,3사분위수,최댓값)
str(x) 데이터의 구성을 표시함
attach(x) 데이터셋을 고정으로 사용하겠다고 선언함, detach할 때까지 유효
변수명만으로 바로 데이터에 접근 가능, iris$Sepal.Width -> Sepal.Width
detach(x) 고정된 데이터셋 사용을 해제 선언함
반응형