Data Science/R

[R] 기본 요약 정리 ( 연산 , 자료형 , vector , factor , list )

Acdong 2020. 5. 12. 16:09
728x90

 

RStudio 패키지 설치 및 사용

#패키지 설치

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

#패키지 사용

library("패키지 이름")

산술 연산 함수

함수 의미 사용 예
log() 로그함수 log(10), log(10, base = 2)
sqrt() 제곱근 sqrt(36)
max() 가장 큰 값 max(3,9,5)
min() 가장 작은 값 min(3,9,5)
abs() 절대값 abs(-10)
factorial() 팩토리얼 factorial(5)
sin(), cos() , tan() 삼각함수 sin(pi/2)

R에서 사용할 수 있는 값들의 자료형

자료형 사용 예 비고
숫자형 1,2,3, -4, 12.8 정수와 실수 모두 가능
문자형 'Tom' , 'Jane' 작은 따옴표나 큰 따옴표로 묶어서 표현
논리형 TRUE , FALSE 반드시 따옴표가 없는 대문자로 표기하며, T나 F로 줄여서 사용하는 것도 가능
특수값 NULL 정의되어 있지 않음을 의미하며, 자료형도 없고 길이도 0 임
NA 결측값(missing value)
NaN 수학적으로 정의가 불가능한 값
ex) sqrt(-3)
Inf , -Inf 양의 무한대(Inf) , 음의 무한대(-Inf)

 

벡터 ( Vector )

1차원 배열 데이터

v1 <- 50:90
v2 <- c(1,2,5,50:90)

 

일정한 간격의 숫자로 이루어진 벡터 생성 : seq()

v3 <- seq(1,101,3) # 1~101 까지 3 간격으로 벡터를 생성해서 v3에 담아라

v4 <-seq(0.1,1.0,0.1) # 0.1 ~ 1.0 까지 0.1 간격으로 벡터를 생성해서 v3에 담아라

 

반복된 숫자로 이루어진 벡터 생성 : rep()

rep('반복대상값, '반복횟수')

v5 <- rep(1,times=5)              #1을 5번 반복

v6 <- rep(1:5,times=3)           #1에서 5까지 3번 반복

v7 <- rep(c(1,5,9),times=3)    # 1, 5, 9 를 3번 반복

벡터의 원소값에 이름 지정 : names()

score <- c(90,85,70)    # 성적
score
names(score)               # score에 저장된 값들의 이름을 보이시오
names(score) <- c("John","Tom","Jane") # 값들에 이름을 부여
names(score)              # score에 저장된 값들의 이름을 보이시오
score                           # 이름과 함께 값이 출력

 

벡터에서 여러 개의 값을 한 번에 추출하기

d <- c(1,4,3,7,8)

d[c(1,3,5)]                     #1, 3, 5 번째 값 출력
d[1:3]                           # 처음 세 개의 값 출력
d[seq(1,5,2)]                 # 홀수 번째 값 출력
d[-2]                            # 2번째 값 제외하고 출력
d[-c(3:5)]                     # 3~5번째 값은 제외하고 출력

1과 지정한 숫자사이의 정수로 구성 : sequence()

sequence(3)         # 결과값은 1,2,3
sequence(3.3)       # 결과는 1,2,3

 

Q1. y<-c(1,2,3,NA) 일 때 3*y ?

① 3 6 9 NA

② NA NA NA NA

③ 3 6 9 NaN

④ 3 6 9 3NA

 

Q2. 다음 중 나머지 세 개의 명령과 다른 결과를 주는 명령은 무엇인가?

① seq(1,10,2)

② seq(from=1,to=10,by=2)

③ seq(from=1,to=10,length=5)

④ 1:5*2-1

 

변수이름 규칙

올바른 변수명 올바르지 않은 변수명
a
b
a1
a2
.x
2a
.2
a-b

 

Q3. 다음 중 R에서 사용하는 객체의 이름으로 적당하지 않은 것은?

① .3ab

② abc

③ a.b

④ a2b

 

벡터의 접근

적용 x[1] x[-1] x[c(1,2)]
의미 [ ] 안에 원소를 가져온다. [ ] 음의 인덱스를 사용해
특정요소만 제거
여러 위치에 저장된
값을 한번에 가져올 수 있음.

*다른 프로그램언어는 첫 번째 요소를 0으로 인식


벡터에 적용 가능한 함수

함수명 설명
sum() 벡터에 포함된 값들의 합
mean() 벡터에 포함된 값들의 평균
median() 벡터에 포함된 값들의 중앙값
max(), min() 벡터에 포함된 값들의 최댓값 , 최솟값
var() 벡터에 포함된 값들의 분산
sd() 벡터의 포함된 값들의 표준편차
sort() 벡터에 포함된 값들을 정렬(오름차순이 기본)
range() 벡터에 포함된 값들의 범위(최솟값 ~ 최댓값)
length() 벡터에 포함된 값들의 개수(길이)

 

벡터들 길이가 동일하지 않은 경우

* 벡터의 재활용 규칙

길이가 서로 다른 두 벡터에 대해 연산을 할때,

짧은 벡터의 처음으로 돌아가 연산이 끝날 때 까지 원소들을 재활용

 

Q4. 아래의 R 스크립트를 실행하여 얻게 되는 결과로 가장 적절한 것은?

x<-c(1,2,3)
y<-c(2,x,3)
x+y

벡터의 재활용 규칙 사용

 

Q5. 다음 보기의 명령 중 에러가 발생되는 것은 무엇인가?

fruit<-c(1,2,3,4)
names(fruit)<-c(“apple”,”peach”,”orange”,”banana”)

① fruit[c(“apple”,”peach”)]

② fruit[1:2]

③ fruit[2:3]

④ fruit[-1:3]


함수에 대한 도움말 확인

 

R에서는 함수 사용 메뉴얼을 사용자에게 제공하는데, R 스튜디오에서는 도움말(Help) 창을 이용하여 내용을 확인할 수 있다.

또는 편집 창에서 함수 이름을 드래그하여 선택한 뒤 [F1] 을 눌러도 동일한 결과를 얻을 수 있다.

 

 


벡터의 논리연선자 사용시 주의할 점

d <- c(1,2,3,4,5,6,7,8,9)

> sum(d>5)
[1] 4

[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE

원래는 6+7+8+9 의 값이 나올줄 알았지만 F / T 값으로 나오기때문에 T + T + T + T 즉 1 + 1 + 1 + 1 인 4가 결과로 나왔다.

 

그럼 원래처럼 하려면 어떻게 할까

>sum(d[d>5])
[1] 30

이렇게 하면 원래 원하던 값을 얻어낼 수 있습니다.

 

Q7. 다음 중 아래의 R코드 출력 결과?

m<-matrix(1:6,nrow=3)
m[m[,1]>1 & m[,2]>5,] ?

m
      [,1] [,2]
[1,]    1   4
[2,]    2   5
[3,]    3   6

m[,1]>1 의 논리연산자 값은 ->[1] FALSE TRUE TRUE

m[,2]>5 의 논리연산자 값은->[1] FALSE FALSE TRUE

m[,1]>1&m[,2]>5 의 논리연산자 값은->[1] FALSE FALSE TRUE

이것은 다음과 같습니다.m[c(FALSE,FALSE,TRUE),] -> 이것은 m의 구성요소 중 TRUE가 있는 위치 요소를 의미합니다.

결국 m[3,] 를 의미합니다.


리스트(list)

벡터가 동일한 자료형의 값들을 1차원 형태로 저장하는 수단이라고 한다면 리스트는 서로 다른 자료형의 값들을 저장하고 다룰 수 있도록 해주는 수단이다.

 

(KEY, 값) 형태의 연관 배열

 

x[[1]] 의 Key의 값만 출력

x[1] (Key, 값)을 담고 서브리스트 출력

ds <- c(90,85,70,84)

my.info <- list(name='Tom', age=60, status=TRUE, score=ds)

my.info                                       #리스트에 저장된 내용을 모두 출력

my.info[[1]]                                 #리스트의 첫 번째 값을 출력

my.info$name                             #리스트에서 값의 이름이 name인 값을 출력

my.info[[4]]                                #리스트의 네 번째 값을 출력


배열(Array)

x <- array(1:12,dim=c(2,2,3))

 

, , 1

     [,1],[,2]

[1.]   1     3

[2.]  2     4

, , 2

     [,1],[,2]

[1.]   5     7

[2.]  6     8

, , 3

     [,1],[,2]

[1.]   9     11

[2.]  10    12

x [ 1, 1, 1 ] 값은 ?   1

 

x[1 , 2 , 3] 값은?    11

 

x[,,3] 값은?

[,1],[,2]

[1.]   9     11

[2.]  10    12


팩터(factor)

문자형 데이터가 저장된 벡터의 일종이다.

저장되는 문자값들이 어떤 종류를 나타내는 값일 때, 예를 들어 성벌, 혈액형, 선호 정당 등과 같이 저장할 문자값들이 몇 종류로 정해져 있을 때 팩터를 사용한다. 팩터는 문자형 벡터를 만든 뒤 factor() 함수를 이용하여 변환한다.

bt <- c('A','B','B','O','AB','A')
bt.new <-factor(bt)

팩터의 역할 중 하나는 이미 지정된 값의 종류 외에 다른 값이 들어오는 것을 막는 것이다.

팩터는 사전에 정의된 값 외에 다른 값들은 입력하지 못하도록 하는 효과가 있다.

gender <- factor("m",c("m","f"))
gender

levels(gender) <- c("male","female") # level 값 변경

행렬/매트릭스 (matrix)

매트릭스는 데이터 테이블의 모든 셀 값들이 동일한 자료형일 때 사용이 되고,

자료형 다른 컬럼들로 구성된 데이터 테이블은 데이터프레임(data frame)의 형태로 저장되고 활용된다.

z <- matrix(1:20, nrow=4, ncol=5)

z2 <- matrix(1:20, nrow=4, ncol=5, byrow=T)

 

1:20 은 행렬/매트릭스의 저장될 값(1~20)을 지정한 것이다.

nrow=4는 매트릭스 행의 수, ncol=5는 매트릭스 열의 수를 의미한다.

 

매트릭스에 저장될 값들을 행 방향으로 채우기 : " byrow=T "

 

 두 개의 벡터를 행 방향으로 묶어주는 함수 : rbind()

> m2 <- rbind(x,y)
> m2

두 개의 벡터를 열방향으로 묶어주는 함수 : cbind()

> m1 <-cbind(x,y)
> m1

 

반응형