Big Data/R

기본적인 R의 지식과 문법

창문닦이 2019. 2. 16. 15:58

 

R 설치 : https://cran.r-project.org/bin/windows/base/

R studio 설치 : https://www.rstudio.com/products/rstudio/download/#download

Rstudio

Files 경로 세팅 후 Set as Working Directory

 

기본적인 R의 지식과 문법  

# 콘솔창에 작성한 코드를 실행시 ctrl + enter

 

1)객체할당과 제거

숫자 , 스트링, boolean, factor  자료 유형 존재

x= 5, x <-5, x -> 5

y= ‘str’

z = false

factor

 

2) 객체 조회 : ls()

 


 

객체의 자료구조와 자료 (객체에는 7가지의 자료구조 존재)  

자료구조의 구분 기준 = 차원의 수 (점, 선, 면, 정육면체 등)

 

1.스칼라 (상수의 개념, 0차원) : x=2.7

 

2.벡터 : a = c(1,2,3,4,5) 인덱스를 입력하면 해당 부분만 조회 가능

seq(시작점,끝점,증가값)

b=c(x,y,z) 벡터는 숫자와 문자와 논리형이 섞이면 데이터타입을 하나로 통일시켜버림

실행시 x,y,z를 모두 string으로 변환시킴

숫자 + 문자 + 논리값 = 문자

숫자 + 논리값 = 숫자

벡터 구성시 통일 되는 우선 순위 : 1 문자 2 숫자 3 논리값

 

3.매트릭스

a = c(1:24) 숫자가 담긴 벡터  a 생성

matrix (a, nrow =6, ncol = 4) 6 x 4 크기의 매트릭스에 a벡터의 값을 넣어줌

 

4.Array

매트릭스를 층으로 쌓아 올렸다고 생각하면 됨

a  = c(1:24)

array(a,c(2,3,4)) 2*3매트릭스가42층으로 구성된 큐브모양이라고 생각

 

5. List

서로 다른 구조를 가진 데이터를 통합시킬 때 사용한다

하나의 벡터로 표현되는 것이 아니라 이 데이터가 담긴 리스트형태가 된다

y <- list(name=’test’, gender=’M’, age = ‘27’)

 

6.Factor : data를 그룹핑된 데이터로 변환

a = c(1,2,3,2,1,2,3,5,24,1)

a = as.factor(a)

범주형 데이터로 변환시켜서 레벨을 볼수있도록 나누어주는 것 

 

7.DataFrame

쉽게 테이블이라고 생각하면 됨

data = read.csv(‘train.csv’)

 

summary(data) 데이터의 통합적인 정보

head(data) 데이터의 모습

str(data) 데이터의 타입

 

기본적으로 csv파일을 읽어올경우 R은 Factor로 읽어온다. 이걸 문자열로 받아오고 싶으면 읽어올때 설정을 변경해주면 된다.

 


 

산술연산자

사칙연산

3+5 ,5-2 ,5/2 ,5*9

16 %/% 5 몫을 출력 (결과값 3)

16 %% 5 나머지를 출력 (결과값 1)

3^2 (결과값 9)

 

data$Age data에서 Age 컬럼만 뽑아온 것

이걸 10,20,30,40대로 나누어 보고싶으면 산술연산자를 사용

 

data$Age%/%10 데이터의 범주를 설정할때 효과적으로 이용하는 방법



기초문제

문제 1.100이하의 3의배수로 이루어진 벡터 v를 만드세요
v = seq(3,100,3)

문제 2.벡터 v에서 5번째 데이터를 출력하세요
v[5]

문제 3.벡터  v에서 1,4,8번째 데이터를 출력
콤마로 넣을경우 디멘젼으로 인식하기 때문에 한번 더 묶어줘야한다.
v[c(1,4,8)]

문제 4. v 에서 홀수번째 번호만 가진  데이터 출력
z = seq(1,33,2)
v[c(z)]


한줄로 표현 가능
v[seq(1,100%/%3,2)]

문제 5. x가 3보다 크고 7보다 작으면서,  5보다 작거나 5보다 큰숫자이면 x=x+1 아니면
x=’정답’ 을 출력하세요


x=8
if((x>3&&x<7)&&(x!=5)){
 x=x+1
}else{
 sprintf('%d=정답',x)
}

 

조건문

비교연산자 <, <= ,> ,>=,  == , !=

비교연산자의 출력결과물 = 논리값

논리연산자 &&(and),  ||(or)

 

if문

if( 조건 ){

조건이 True일 시 실행되는 코드

} else if ( 조건 ){

조건이 True일 시 실행되는 코드

} else {

조건이 False일 시 실행되는 코드

}

 

ifelse문

ifelse (조건문, 참일때의 반환값, 거짓일때의 반환값)



반복문 : while, for

while(조건){

조건 만족시 실행될 코드

}

 

for문

for(ele in set){

print(ele)

}

 

for(i in c(1:9)){

print(i)

}

기초문제
문제 7. 10보다 작은 자연수들의 합을 구하시오
sum = 0
i=0
while(i<10){
 sum=sum+i
 i=i+1
}




문제 8 . 100보다 작은 숫자들의 합을 구하세요



문제 9 . 100보다 작은 숫자들중 홀수의 합을 구하세요

.


문제 10.  100보다 작은 숫자들중 홀수의 합을 구하세요 (단, ifelse 이용 )



문제 11. 1~100사이의 수중 홀수를 출력하세요 ( for문 이용)




문제 12. 5~15 숫자중 짝수끼리 더한 합을 구하라 ( for문 이용)




 

 

기초적인 수학계산

sin(pi) # 1.224606

log(3) # 1.098612 밑이 자연로그 log10(100) #2 상용로그 floor(3.14) #3 버림 round(3.54) #4 반올림. 0.5일 경우 짝수로 반환한다.

 

ceiling(3.14) #4 올림 sqlt(9) #3 제곱근 min(c(1:100)) # 최소값 max(c(1:100)) # 최대값 mean(c(1:100)) # 평균 sd(c(1:100)) # 29.01149 표준편차 sum(c(1:100)) # 합계 runif(2,1,10) 1~10사이의 2개의 수 랜덤으로 보냄

 

'Big Data > R' 카테고리의 다른 글

dplyr패키지 활용  (0) 2019.02.19