ggplot2 로 정규분포표, 확률밀도함수 그래프를 그려보기로 한다. 아래 그림은 인터넷 서핑해서 구해놓은 그래프인데, R - ggplot2 로 똑같이 구현할 예정이다. 그래프만 그리는 건 아니고, 화살표며 f(x) 같은 수식 등 다 넣어보려 한다. 분포함수, 확률밀도함수 하기전에 알아야 할 몇가지 함수가 있다. dnorm, pnorm, qnorm 을 알아야 한다. 위 그래프 기준으로 우선 참고해서 이해하면 쉽다. # x축의 값을 입력하면, 확률밀도함수의 f(x) 의 값을 리턴. dnorm(1) # [1] 0.2419707 --> y 값을 뜻함. # x축의 값을 입력하면, x값이하의 f(x)의 적분값(확률밀도함수의 넓이)를 리턴 pnorm(1) # [1] 0.8413447 --> x 약 x = 1 이 리..
아래와 같은 막대그래프를 하나 그려보면서 공부한걸 정리해본다. 간단해 보이지만, 막대그래프를 y 축을 기준으로 표현했고, 하나의 값으로 그린게 아니라 여러값을 그룹핑하여 쌓아(stacked) 표현했고, 마지막으로 수치들을 막대그래프 위에 혹은 우측에 텍스트로 표현하는 것까지 구현해야 한다. 그래프를 그리고자하는 스킬보다는 데이터를 이해하는게 더 중요하다. 아래와 같은 그룹형으로 스택(stacked)형의 막대를 쌓기 위해서는 기본적으로 수치간에 그룹핑을 할 수 있는 값들이 추가로 필요하다. 여기서 date 는 양배추 심은 일자, cultivar 는 양배추 품종, weight 양배추 수확 무게 인듯 하다. 어쨋든 일자별로 심은 품종별로 무게를 bar 차트로 구현하는게 목적이며, 그 그룹핑을 할 수 있는 컬럼..
R 은 행렬연산을 간단하게 처리할 수 있다. 행렬에 단순한 사칙연산 뿐 아니라, 행렬끼리의 곱셈 등 연산이 쉽게 가능하다. 우선 하나의 행렬을 정의하고 전치행렬을 구해본다. m1 = matrix(1:12, ncol = 4) m1 # 출력결과(변경전) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 t(m1) # 출력결과(전치행렬 변경후) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12 행렬에다 단순 사칙연산도 쉽게 가능하다. m1 [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 m1 + 10 [,1] [,2] [,3] ..
R 프로그램에서 벡터를 만드는 방법은 여러가지가 있다. 직접 입력하거나, seq/rep/sample 등의 벡터생성하는 함수들을 사용하거나, 빈값으로 length 만 정하는 등 여러가지이다. 실제 퍼포먼스는 어떨지는 좀 확인은 해봐야겠으나, loop 를 사용하는 것은 R 에서는 권장하진 않는다. 일반적인 프로그램언어라면 for/while 문은 어느정도의 기본 문법이다보니 사용을 많이 하게 되는데, R 에서는 대부분 벡터를 입력받아 벡터로 리턴하는 함수체계가 대부분이라 loop 를 거의 사용하지 않도록 코딩을 할 수 있다. 특정 조건을 만족하는 숫자인 경우, 문자열로 치환하여 별도의 벡터형으로 저장해보자. 0~4는 C등급, 5~8은 B등급, 9~10은 A등급으로 변경하려면 어떻게 해야 할까. 일반적이라면 f..
ggplot2 그래프 일부분만 줌인해서 확대해서 보거나, 더 넓은 범위위에서 전체그림을 보고 싶을 때가 있다. ggplot 라이브러리의 coord_cartesian 함수를 사용하면 그래프를 x축 y축을 축소, 확대 하는게 손쉽게 가능하다. 가볍게 라인그래프 하나 그려본다. library(tidyverse) t = tibble(x = c(4,5,6), y = c(50, 30, 40)) ggplot(t, aes(x, y))+ geom_line() 여기서 값은 3개뿐이지만, 그 외의 범위로 보고 싶다면 어떻게 해야 할까. 만약 x 축을 1~10의 범위로 보고싶다면, 아래와 같이 실행하면 된다. limits 로 1에서부터 10까지 보고싶은 범위를 지정하고, breaks 를 이용해서 x 축의 레이블을 정한다. 2..
숫자와 문자가 섞여있을때, 문자만 분리하고 싶다면, 아래와 같이 하면된다. 경고메시지가 나오긴 하지만 무시해도 된다. a = c(10,10,10, 'a', 'b', 'c', 20, 30, 'd') # [1] "10" "10" "10" "a" "b" "c" "20" "30" "d" as.numeric(a) # [1] 10 10 10 NA NA NA 20 30 NA is.na(as.numeric(a)) # [1] FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE TRUE a[is.na(as.numeric(a))] # [1] "a" "b" "c" "d" # Warning message: # NAs introduced by coercion 데이터 프레임으로 하는 경우도 비슷하다. ..
텍스트 데이터 분석을 위한 tidytext 라이브러리의 unnest_tokens 함수에 대한 사용 예제를 정리한다. 샘플데이터를 우선 하나 d 로 정의한다. library(tidytext) library(dplyr) library(janeaustenr) d % unnest_tokens(word, txt) # 둘다 동일한 결과를 만든다. d %>% unnest_tokens(output = word, input = txt, token = "words") # A tibble: 122,204 × 1 word 1 pride 2 and 3 prejudice 4 by 5 jane 6 austen 7 chapter 8 1 9 it 10 is # … with 122,194 more rows 빌트인 token 옵션만 사용..
- Total
- Today
- Yesterday
- ubuntu
- Google Chart Tools
- 셀프개통
- 맥북
- 마인크래프트
- MongoDB
- MySQL
- javascript
- heroku
- ggplot
- Oracle
- SVN
- ggplot2
- vagrant
- java
- 이클립스
- 자급제폰
- Spring
- eclipse
- python
- 막대그래프
- 아이맥
- docker
- MyBatis
- 알뜰요금제
- 도넛차트
- R
- ipTIME
- github
- ktm모바일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |