set.seed(123) #난수 생성을 위해 seed를 123으로 지정합니다.

x <- rnorm(100, 65, 13) #평균 65, 표준편차 13인 data 100개를 생성합니다.

table(x) #생성된 50개의 난수 값을 확인해 봅시다.

#첫 줄은 생성된 난수를 의미하며, 둘째 줄은 빈도수를 의미합니다. 많이 중복돼봤자 3번이네요.

x<-c(x, max(x)+sample(10:20, 5), min(x)-sample(10:20, 5)) #이상치를 생성하기 위해 생성된 난수 중 최댓값 보다 5개 더,

                                                                          #최소값보다 작은 5개 data 더 생성합니다.

boxplot(x) #난수 50개의 box plot을 그려봅니다.

#그림만 있을 때는, 전체적인 내용을 파악하기 쉽지만 정확한 수치를 알지 못한다는 단점이 있습니다.

quantile(x) #사분위수 정보에 대한 함수를 호출하겠습니다.

# 25%는 1사분위수, 50%는 2사분위수(median), 75%는 3사분위수를 의미합니다.

# Q1, Q2, Q3라고도 불리죠.

q <- quantile(x) #변수 q에 사분위수 정보들을 넣겠습니다. 7.0 ~ 99.0까지 순차대로 들어가겠네요.

q1 <- q[2] #1사분위수는 25%(27.0)가 두번 째에 있으므로 q[2] 값을 q1에 저장합니다.

q3 <- q[4] #3사분위수는 75%(77.5)가 네번 째 있으므로 q[4] 값을 q3에 저장합니다.

 

iqr <- q3-q1 # IQR은 3사분위수 - 1사분위수 값이므로 iqr 변수에 q3-q1 값을 저장합니다.

 

upper_fence <- q3 + (1.5*iqr) # box 위에 마진까지는 3사분위수 + iqr의 1.5배 입니다.

lower_fence <- q1 - (1.5*iqr) # box 아래 마진은 반대로 1사분위수 - iqr의 1.5배 겠죠?

 

#따라서, 이상치의 범위는 x < lower_fence | x > upper_fence 입니다. 

 

outlier_idx <- which( x< lower_fence | x > upper_fence) #이상치 가진 값들을 indexing 하여 변수에 저장합니다.

x2 <- x[-outlier_idx] #이상치를 제외한 data들만 뽑아서 x2 변수에 새로 저장합니다.

boxplot(x2)  #이상치를 제외한 data들만 x2에 있으므로,

                #boxplot(x)와 다르게 boxplot(x2)에는 이상치 제외된 값들이 그려지게 됩니다.

'컴퓨터공학 > R programming' 카테고리의 다른 글

[5] 반복문(for문)  (0) 2019.05.22
[4] stringr package 이용, string 함수  (0) 2019.05.22
[3] R의 자료구조(R Data Structure)  (0) 2019.05.21
[2] R언어 Data type  (0) 2019.05.21
[1] R, RStudio 설치하기  (0) 2019.05.21

C++ 경우를 먼저 살펴보면,

 

for(int i =1, i<=3; i++)

{

  cout << i << "번째 출력" << endl;

}

실행할 경우, 

1번째 출력

2번째 출력

3번째 출력

이라고 나오게 되는데, 이걸 R에서 구현해보겠습니다.

 

구조 : for(변수 in 반복조건){}

i <- 1

for( i in 1:3)

{

print(paste0(i, "번째 출력"))

}

결과 값 : 

C/C++에 익숙해서 조금은 낯설게 느껴지지만

logic은 똑같습니다!

반복 횟수 지정할 변수 초기화 그리고 반복 조건 지정하시면 됩니다.

'컴퓨터공학 > R programming' 카테고리의 다른 글

[6] 사분위수 구하기  (9) 2019.05.23
[4] stringr package 이용, string 함수  (0) 2019.05.22
[3] R의 자료구조(R Data Structure)  (0) 2019.05.21
[2] R언어 Data type  (0) 2019.05.21
[1] R, RStudio 설치하기  (0) 2019.05.21

install.packages("stringr")

#"stringr" package를 설치하기

library("stringr")

#설치한 "stringr" package library를 사용하겠다고 선언

 

TIP) 한 줄 실행 : Ctrl + Enter

      여러 줄 실행 : 여러 줄 Drag 해서 Block 설정 후 Ctrl + Enter

      # : 주석 (C/C++에서 //와 같은 기능)

 

1] str_extract(string, pattern)

: string data에서 pattern 조건에 해당하는 data 추출

ex) str_extract("abcd111aa3334", "[1-9]{2}")

# string data "abcd111aa3334"에서 숫자(1~9)형 data 연속으로 2개 나타는 data 추출(가장 먼저 발견되는)

결과 값 : "11"

# abcd111aa3334 중 숫자형 data 연속 2개 나타나는 값은 11, 33이 있는데 가장 먼저 발견되는 11만 나오게 됩니다.

 

2] str_extract_all(string, pattern)

: str_extract(string, pattern)과 비슷하지만, 가장 먼저 발견되는 pattern만 추출되는 것과 달리

pattern에 해당하는 모든 data를 추출합니다.

ex) str_extract_all("abcd111aa3334", "[1-9]{2}")

결과 값 : "11" "33" "34"

※ 모든 경우의 수를 고려하는 줄 알았지만, 한 번 검출된 data는 제외하고서 추출하는 것 같습니다.

예상했던 값은 "11" "11" "33" "33" "34"였지만, 한 번 추출된 data 제외하고서 "11" "33" "34"만 나옵니다.

 

3] str_replace(vector, pattern, replacement)

: string형 vector data 중, pattern 조건에 해당하는 data를 replacement에 입력한 값으로 바꾸겠다는 의미입니다.

ex) str_replace(c("한국", "USA", "JAPAN", "CHINA"), "한국", "KOREA")

결과 값 : "KOREA" "USA" "JAPAN" "CHINA"

평소에 자주 사용하는 Ctrl+F 단축키 이용하여 바꾸기 기능을 한다고 생각하시면 됩니다.

 

4] str_sub(string, start, end)

: string data에서 start 값(숫자)부터 end 값(숫자)까지 추출하겠다는 의미입니다.

학부시절, 자료구조시간에 character를 이용해서 string 만든 뒤,

특정 위치(pos) 지정하여 값 추출하는 함수 구현했던 기억이 나네요..

ex) str_sub("123456", 3, 6)

#string data "123456"에서 3번째 값부터 6번째 값까지 출력

결과 값 : "3456"

 

'컴퓨터공학 > R programming' 카테고리의 다른 글

[6] 사분위수 구하기  (9) 2019.05.23
[5] 반복문(for문)  (0) 2019.05.22
[3] R의 자료구조(R Data Structure)  (0) 2019.05.21
[2] R언어 Data type  (0) 2019.05.21
[1] R, RStudio 설치하기  (0) 2019.05.21

C/C++에서는 배열(array), 링크드리스트(linked list), 포인터(pointer)를 이용하여 Data에 접근하듯이

R에서도 자료구조를 이용하여 data에 접근합니다.

 

R의 자료구조 종류에 대하여 알아보겠습니다.

 

1. Vector

2. Matrix

3. List

4. Data Frame

 

크게 4가지로 나뉘어 집니다.

 

1. Vector

: 같은 data type을 가진 data들이 한 줄로 줄 서 있다고 생각하면 됩니다!

ex) [1] [2] [3] [4] [5]

     a   b   c   d   e

문자 a부터 e까지, 총 5칸 짜리 방에 1개씩 들어가 있다고 보시면 됩니다.

C++에서 1차원 배열이라고 생각하면 됩니다.

*주의할 점! 꼭 같은 data type만 저장이 가능합니다. a 1 b 3 c 이런식으로는 불가능 합니다.

※ 함수 사용 시 : sapply() 사용

 

2. Matrix

: Vector와 마찬가지로 같은 data type을 가진 data들로 이루어지지만,

한 줄로 서있는 Vector들이 여러개 합쳐져 있다고 생각하시면 됩니다.

C++에서 2차원 배열과 같은 기능이죠.

ex)    [1] [2] [3] [4] [5]

   [1]  a   c   e   g   i

   [2]  b   d   f    h    j

문자 10개를 a~e까지는 1번째 row에, f~j까지는 2번째 row에 저장하여

2개의 row가 만나 하나의 Matrix를 이루는 구조입니다.

C++의 경우에는 f에 접근하기 위해서는 array[2][1]로 사용하듯 행과 열로 이루어진 2차원 배열입니다.

※ 함수 사용 시 : apply() 사용

 

기본적으로 열(세로) 순서대로 들어가게 됩니다.

행(가로) 순서대로 값을 입력하고 싶은 경우, matrix() 함수 parameter에서 byrow=T 입력하면 됩니다.

 

3. List

: Vector와 Matrix의 단점은 같은 data type만 저장 가능하다는 것이지만, List의 경우에는 이 단점을 보완할 수 있습니다.

서로 다른 data type의 data들이 저장 가능합니다!

Key : value 형태로 구성해야 합니다.

웹프로그래밍 했을 당시 json이 key-value pair였던 것 같은데..기억이 가물가물 하네요ㅠㅠ

ex) var1 <- list( x = 1:2, y=c("b", "c"), z= 3:6)

결과화면 : $x 1 2 $y b c $z 3 4 5 6

key값이 먼저 나오고, 그 key 값에 해당하는 value들이 표시되는 format입니다!

※ 함수 사용 시 : lapply() 사용

4. Data Frame

: List와 Vector의 혼합형으로 Excel Sheet라고 생각하면 됩니다.

Data Frame도 마찬가지로, 서로 다른 data type을 2차원 배열로 구성하는 것입니다.

Data Frame을 이용하여 사용할 수 있는 함수도 광범위해서 Data Frame은 추후 다시 정리하겠습니다.

※ 함수 사용 시 : apply(), tapply() 사용

 

 

'컴퓨터공학 > R programming' 카테고리의 다른 글

[6] 사분위수 구하기  (9) 2019.05.23
[5] 반복문(for문)  (0) 2019.05.22
[4] stringr package 이용, string 함수  (0) 2019.05.22
[2] R언어 Data type  (0) 2019.05.21
[1] R, RStudio 설치하기  (0) 2019.05.21

*변수명 생성 규칙

1) 변수명의 시작은 영문!

ex) 1abc, #sddaf, 3jfiowj 같은 경우 사용 불가

c.f) 2번째 변수 글자부터는 _, . 사용 가능하나 하이픈(-)은 불가

2) 영어 대/소문자 구분

 

R에서 사용하는 Data type

1) numeric : 수치형

- 말 그대로 숫자가 들어가는 data type

2) logical : 논리형

- Boolean type이라고도 하죠 TRUE/FALSE

3) character : 문자형

- C/C++의 경우, 'a', 'b', 'c'같이 1 글자만 character로 취급하는데, R에서는 'abc'와 같은 string도 character!

- 'abc' = "abc", single/double quotation mark 구분 안하고 둘다 사용 가능합니다. 

4) data.frame : 데이터프레임

- Excell sheet같은 형태

5) na : NA

- 결측치 = 비어 있는 상태(empty)

- NULL이랑은 구분해서 취급 : x<-NULL의 경우 is.na(x)는 logical(0) 결과, is.null(x)에서 TRUE 결과 

6) integer : 정수형

- 모두가 아는 반가운! 인티저!

7) double : 실수형

- float가 아닌 double로 실수형 data type

8) complex : 복소수형

- ex) 1+0i, 2+0i

9) factor : 범주형

- 차트 or plot 만들 때 사용하는 data type!

- parameter 중 level이 중요한 역할(생략 시 Alphabets 순서)

10) nan : NaN 

- 숫자가 아닌 data type을 TRUE/FALSE로 표시

ex) is.nan(1/0 - 1/0) = TRUE

 

*data type에 관한 함수*

is.numeric(x) : x변수가 numeric type인지 아닌지 TRUE/FALSE

as.numeric(x) : x변수를 numeric type으로 취급(형 변환과 비슷하나 실제 형 변환X)

c.f) numeric 대신에 ineger, double, factor 등 data type을 넣으시면 됩니다!

 

'컴퓨터공학 > R programming' 카테고리의 다른 글

[6] 사분위수 구하기  (9) 2019.05.23
[5] 반복문(for문)  (0) 2019.05.22
[4] stringr package 이용, string 함수  (0) 2019.05.22
[3] R의 자료구조(R Data Structure)  (0) 2019.05.21
[1] R, RStudio 설치하기  (0) 2019.05.21

설치에 필요한 항목 : R, Rstudio

 

1. R 설치(https://www.r-project.org/)

 

CRAN > Korea >  https://ftp.harukasan.org/CRAN/ > Download R for Windows > base > Download R 3.6.0 for Windows (80 megabytes, 32/64 bit)

 

 

2. R studio 설치 (https://www.rstudio.com/)

 

Products > RStudio > Rstudio Desktop > DOWNLOAD RSTUDIO DESKTOP > Rstudio Desktop Open Source License FREE Download

 

R과 RStudio 모두 설치를 마친 후, RStudio 실행시킨 화면입니다!

R언어는 통계와 프로그래밍의 Collaboration!

프로그래밍 언어 경험이 있으시다면, 진입장벽이 낮다는데 제가 한 번 도전해보겠습니다!

'컴퓨터공학 > R programming' 카테고리의 다른 글

[6] 사분위수 구하기  (9) 2019.05.23
[5] 반복문(for문)  (0) 2019.05.22
[4] stringr package 이용, string 함수  (0) 2019.05.22
[3] R의 자료구조(R Data Structure)  (0) 2019.05.21
[2] R언어 Data type  (0) 2019.05.21

BE THE FIRST PENGUIN