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



프로그래밍 놓지 말기 위해서 퇴근 하고 해야지! 하는 마음가짐으로

간단한 리마인드 프로젝트 입니다.

야근을 해서 그런지 프로젝트 생성밖에 한 게 없는데, 벌써 자야할 시간이 다가왔네요.

추후 수정해서 업데이트 하도록 하겠습니다. 아디오스...


도체 / 반도체 / 부도체 기준 : 전기가 통하느냐!

도체 : 전기가 아주 잘 통하는 물질 ◀ㅡㅡㅡㅡ▶ 부도체(=절연체) : 전기가 통하지 않는 물질

반도체 : 도체와 절연체 사이


ex) 도체 : 철, 금, 은, 알루미늄

반도체 : 실리콘, 게르마늄

부도체 : 유리, 플라스틱, 나무


반도체 종류 : 

1) 원소 반도체(Intrinsic Semiconductor) = 순수한 결정 상태 ( Si, Ge, Sn, Se, Te )

2) 화합물 반도체 = 2개 이상 원소가 화합한 상태 ( AlAs, InP, ZnSe, AlGalnAs)

3) 산화물 반도체 = 금속이 산화한 상태 ( SnO2, Cu2O, TiO2, NiO)


1)의 원소반도체 + 小량 불순물 => 저항률 뚝↓(도체의 성질 띄게 됨)

∴ 불순물 반도체(Impurity Semiconductor)


ex) Si(원소 반도체) + Boron(3족원소) / Arsenic(5족원소) / Phosphorus(5족원소)


Si를 어떻게 사용해 원소 반도체로 만들까?


Si 물질을 초고순도 단결정 구조로 만들어 Ingot 제작(원통모양)

예시로, (실제와는 아주 다르지만)아래 햄과 같은 모양이다.

Ingot은 왜 이런 원통모양일까?에 대해 고민을 해본 적이 있는데,

Si을 회전시키면서 만들기 때문에 원통 모양이 되는 것이다.


wafer edge 수율이 떨어지는 이유로 원통모양이 원인이 아닐까 싶어서

네모난 모양, 삼각형 모양, 별모양 등 별 생각을 다해보았지만

Ingot을 만들기 위해선 회전시켜야 하므로 원통 모양인 것이었다!



Ingot을 슬라이스 형태로 자른 것 : Wafer(like 햄 한 조각).


실제 Wafer Ingot과 Wafer

(Image from : https://www.tel.com/museum/magazine/material/150430_report04_03/02.html)



(Image from : http://www.andrew.cmu.edu/user/bgclark/Index.html)


Wafer를 많이들 피자 도우로 표현한다.

피자 도우 위에 토핑이 올라가듯이

많은 회로들이 올라가기 때문인 듯 싶다.

차별화적으로 표현해보자면, 크레페라고 생각하자..

크래커 위에 참치와 토마토가 올라가듯이.(억지부려서 죄송합니다;)


이 Wafer를 컷팅함으로 단품이 완성 되는 것이다!


여기서 드는 궁금증!

Wafer를 만들 때 많은 물질 중, 왜 Si일까? Why?


규소(Si)는 흔히 볼 수 있는 모래와 돌에서 찾을 수 있다.

가장 큰 이유로 Si는 지구상에 풍부하다.


그렇다고 길가에 돌맹이를 주워서 Wafer를 만들 순 없다.

초고순도 단결정 구조로 만들어야만 사용할 수 있다.

Si 결정의 결정격자가 반복적 + 규칙적 조건이 AND조건으로 맞아 떨어져야 한다.


(Image from : https://m.blog.naver.com/PostView.nhn?blogId=ocairy&logNo=221138210385&proxyReferer=https%3A%2F%2Fwww.google.com%2F)


단결정 구조에 대해 더 공부해 보시고 싶으신 분들은 상기 이미지 출처에 방문해보시면 도움이 될 듯 싶습니다.


글을 읽는 동안, 조금이나마 친숙해진 "Si"를 소개하겠습니다.

원자번호 : 14,

족 : 4족원소

구조 : 다이아몬드

전자 : 14개+4개 외각전자

★4개의 외각전자(이미지상 녹색)로 "공유결합"을 하고 있어 안정적 상태 유지★


4족원소 Si에 불순물 3족원소 Boron 혹은 5족원소 Arsenic / Phosphorus를 첨가하여

P형 반도체 N형 반도체를 만들 수 있다.


이 이야기는 다음 Chapter에서 자세히 다루도록 하겠습니다.



※ 이 포스팅은, 특정 교재를 통해 공부하고 정리한 내용을 토대로 작성하였습니다.

올바르지 않은 내용이 포함 될 수 있으며,

(지식에 대한 2차 창작물이므로 상관 없겠지만)저작권상 문제가 될 경우 inform 주시면 감사하겠습니다.


한국사 1급 합격 인증샷입니다!

18년 2월 3일에 시행한 건데, 문득 생각나서 11월인 지금에야나 수기를 쓰네요.

점수는 턱걸이로 컷트라인에 아슬아슬하게 걸려 합격한거라 민망하므로 가렸어요..ㅎㅎ


제 합격비법 공유 드리겠습니다.

우선, 저는 인터넷 강의도 전혀 수강 안하고

책 1권으로 독학으로만 3주만에 합격했습니다.


책은 에듀윌 '한국사 2주끝장' 입니다.

빨리 후딱 끝내고 싶은 마음에, 서점에서 고르게 되었던 책입니다.



혹시, 이 책을 사서 펴보신 분들이나 한국사를 공부해 보신 분들은 아실거에요.

절대 2주 안에 끝낼 수 없는 양이라는 걸...


그렇다면 3주 안에 끝내기 위해선 무얼 해야 하느냐!


Step 1. 이 게시판에 업로드 되어 있는 1.~7. 요약 정리본을 프린팅 하여 달달 외운다.

Step 2. 한국사능력검정시험 사이트(http://www.historyexam.go.kr)에 접속하여 기출문제를 1회당 3장씩 프린트한다.

Step 3. 1회부터 가장 최근 기출 순으로 3번 반복해서 푼다.

※ Step 1을 건너 뛰시면 아무 소용이 없습니다.


쓸데없는 팁이지만, 계속 공부만 하다보면 너무 지루하잖아요.

그럴땐 유튜브에 '설민석'님을 검색하세요. 짤막한 영상 혹은 한국사 배경으로 한 영화 소개 나오는데

머리식히면서 공부하기에 최고입니다.


한국사능력검정시험 사이트에서 기출문제 다운로드 받는 방법입니다.


1. http://www.historyexam.go.kr 접속

2. 문제관리 > 시험자료실 > 제목에 '고급' 검색



이 땅의 모든 한국사 응시자 여러분들 응원합니다!

꼭 합격하세요!

라이젠 2200G는 CPU+GPU인 APU형식이라 그래픽카드를 추가하지 않았습니다.

후기 들을 찾아 보았을 때, 롤이나 오버워치도 중옵에서 돌아갈 정도라는데 받아본 뒤, 리뷰 작성하겠습니다.


최저가 및 신뢰도 있는 사이트 찾아보다가 플레이컴퓨터(http://playcom.co.kr) 에서 구매를 하게 되었습니다.


저는 저 목록에서 LG전자 모니터 24MK600MW (186,100원) + 배송비(12,500원)까지 합쳐서 총, 746,500원에 구매 하였습니다.

플레이 컴퓨터의 후기는 반은 긍정적이고 반은 부정적이라 걱정되는면이 없지 않지만

조립 사진도 올려주시고, 입금확인 및 배송이 빠르다는 후기가 많아서 이용해보게 되었습니다.

최종 리뷰는 택배 수신 후 하겠습니다!


I didn't order a graphic card because Ryzen 2200g is APU which has CPU and GPU functions.

When I looked it up, some people said it is able to play either League of Legend or Overwatch with middle options.

After I got this product, I'm going to review it again in detail.


I considered two factors that are low prices and reliability, so I've paid for my computer in playcom(http://playcom.co.kr)


I added two things on the list, LG electronics monitor(24MK600MW) - about CA$217 and delivery charge - about CA$14.

Consequently, I paid CA$872 for those things.

There are half positive reviews and half negative reviews on playcom website.

Even though I'm worried about this point, they suggest some pics of products after they finish to work.

Additionally, some people argue their delivery is so fast!

That's why I chose this website. Anyway, I'll review it again clearly after I get my precious PC.

See you soon!




==================================================================================================



하루만에 배송 실화인가요

와 흠집 하나 없이, 포장을 꼼꼼하게 해주심을 느낄 수 있었습니다.

제가 플레이컴퓨터로부터 돈받고 작성하는 것도 아닌데 진짜 너무 폭풍 칭찬 드리고 싶어요.

감사드립니다.

BE THE FIRST PENGUIN