T'SPACE

다채로운 에디터들의 이야기

컴퓨터공학/ADsP

데이터 준 분석가 R언어 기초

Tonny Kang 2024. 7. 14. 10:21
반응형

https://tonnykang.tistory.com/264

 

ADsP 데이터 분석 준 전문가 정리 6

분석 준비도기업의 데이터 분석 도입의 수준을 파악하기 위한 진단 방법이다분석 업무 파악분석 인력 및 조직분석 기법분석 데이터분석 문화IT 인프라분석 준비도 및 성숙도 진단 결과를 4분면

tonnykang.tistory.com

 

R언어


R의 데이터 타입


문자형 타입

Character는 문자형 타입으로 따옴표 혹은 쌍따옴표로 표시할 수 있다

각 변수의 타입은 Class 함수를 이용해 확인 할 수 있다

> class('abc')
[1] "character"

숫자형 타입

  • numeric(숫자형)
  • double(실수)
  • integer(정수)
  • complex(복소수)

등이 있다

Inf는 Infinite의 약자로 무한대를 나타내며 -Inf도 있다

논리형 타입

logical은 논리형 타입으로 참 혹은 거짓을 의미한다

NaN, NA, NULL

NaN은 ‘Not a Number’의 약자 ex) 음의 제곱근

NA는 ‘Not Available”의 약자이며

NULL은 결측값을 의미한다

728x90

R 기본 문법


대입 연산자

#왼쪽에 값을 대입
string <- 'abc'
number1 <<- 15
logical = NA
#오른쪽에 값을 대입
"data" -> string2
Inf ->> number2

산술 연산자

%/% #두 숫자의 나누셈의 몫
%% #두 숫자의 나눗셈의 나머지

나머지는 파이썬과같은 다른 언어들과 비슷함

반응형

R 데이터 구조


벡터

타입이 같은 여러 데이터를 하나의 행으로 저장하는 1차원 데이터 구조다

concatenate의 c를 써서 데이터를 묶을 수 있다

> v4 <- c(3, TRUE, FALSE)
> v4
[1] 3 1 0

> v5 <- c('a', 1, TRUE)
> v5
[1] "a" "1" "TRUE"

벡터를 생성할 때 콤마로 직접 성분을 입력할 수 있지만

콜론 (:)을 활용해 시작값과 끝값을 지정해 벡터를 생성할 수도 있다

> v1 <- c(1:6)
> v1
[1] 1 2 3 4 5 6

행렬

2차원 구조를 가진 벡터이다

벡터의 성질을 가지고 있으므로 저장된 모든 데이터는 같은 타입이어야한다

그렇지 않을 경우 자동으로 타입 변환이 된다

matrix를 사용할 경우 nrow를 사용하여 행의 수를 결정하거나 ncol을 사용하여 열의 수를 결정할 수 있다

> m1 <- matrix( c(1:6), nrow=2)
> m1
        [,1] [,2] [,3]
[1,]  1    3    5
[2,]  2    4    6

> m2 <- matrix( c(1:6) , ncol = 2)
> m2
    [,1] [,2]
[1,]  1    4    
[2,]  2    5    
[3,]  3    6

matriz를 사용하여 행렬을 만들 경우 행렬의 값들이 열로 저장되는 것을 볼 수 있다

하지만 byrow옵션에 T(TRUE)를 지정하면 값들이 열이 아닌 행으로 저장된다

> m3 <- matrix( c(1:6) , nrow =2, byrow=T)
> m3
        [,1] [,2] [,3]
[1,]  1    2    3
[2,]  4    5    6

행렬을 만드는 또 다른 방법은

벡터에 차원을 dim함수를 사용해 만들어주는 것이다

> v1 <- c(1:6)
> v1
[1] 1 2 3 4 5 6

> dim(v1) <- c(2, 3)
> v1
        [,1] [,2] [,3]
[1,]  1    3    5
[2,]  2    4    6

배열

3차원 이상의 구조를 갖는 벡터를 배열이라고 한다

array를 사용하여 배열을 만들 수 있으나 몇차원 구조를 갖는지 dim 옵션에 명시해야한다

> a1 <- array( c(1:12), dim =  c(2, 3, 2))
> a1
,  ,  1
        [,1] [,2] [,3]
[1,]  1    3    5
[2,]  2    4    6
,  ,  2
        [,1] [,2] [,3]
[1,]  7    9    11
[2,]  8   10    12

리스트

리스트는 데이터 타입 데이터 구조에 상관없이 사용자가 원하는 모든 것을 저장할 수 있는 자료구조이다

> L <- list()
> L[[index]] <- you can put anything, even an array as an element

데이터프레임

데이터 분석을 위한 2차원 구조를 갖는 관계형 데이터 구조로서 R에서 가장 많이 활용되는 데이터 구조이다

여러 개의 벡터로 구성되어 있기 때문에 각 열은 서로 다른 타입의 데이터를 가질 수 있다

> v1 <-c(1, 2, 3)
> v2 <- c('a', 'b', 'c')
> df1 <- data.frame(v1, v2)

R 내장 함수


기본함수

> help(paste) # 명령어 입력 후 우측 하단 도움말에 결과가 출력된다
> ?paste

> paste( 'This is', 'a pen')
[1] "This is a pen"

> seq( 1, 10, by=2)
[1] 1 3 5 7 9

> rep(1, 5)
[1] 1 1 1 1 1

> a <- 1
> rm(a)
> a
ERROR: object 'a' not found

> ls()
[1] prints all the list of current variables

통계함수

나머지는 딱 보면 무슨함수일지 감이 오는데

> sd() # 표준편차를 구한다

> range() # 파이썬과 다른 최소 최대 값을 출력

> summary() # Min. 1st Qu. Median Mean 3rd Qu. Max.
# 6개의 요약 값을 출력한다

R 데이터 핸들링


데이터 이름 변경

행렬, 배열, 데이터프레임과 같이 2차원 이상의 데이터 구조는 colnames와 rownames 함수를 사용하여 행과 열의 이름을 알 수 있고 지정할 수 있다

> m1 <- matrix(c(1:6), nrow=2)
> colnames(m1) <- c('c1', 'c2', 'c3')
> rownames(m1) <- c('r1', 'r2')
> m1
  c1 c2 c3
r1 1  3  5
r2 2  4  6
> colnames(m1)
[1] "c1" "c2" "c3"
> rownames(m1)
[1] "r1" "r2"

데이터 결합

데이터를 행으로 결합하는 rbind와

열로 결합하는 cbind가 대표적이다

> v1 <- c(1, 2, 3)
> v2 <- c(4, 5, 6)
> rbind(v1, v2)
    [,1] [,2] [,3]
v1  1    2    3
v2  4    5    6
> cbind(v1, v2)
        v1 v2
[1,] 1  4
[2,] 2  5
[3,] 3  6

결합하는 과정에서

행 또는 열의 수가 다를 경우 더 큰 값을 기준으로

재사용 규칙을 활용해 결합된다

> v1 <- c(1, 2, 3)
> v2 <- c(4, 5, 6, 7, 8)
> rbind(v1, v2)
    [,1] [,2] [,3] [,4] [,5]
v1  1    2    3    1    2 #재사용 규칙
v2  4    5    6    7    8

통계분석에 자주 사용되는 R함수


문자연산

> data <- "This is a pen"
> nchar(data)
[1] 13

> grepl( 'pen', data)
[1] True

벡터 연산

cov() # 두 수치 벡터의 공분산을 구한다
cor() # 두 수치 벡터의 상관계수를 구한다

행렬 연산

t() # 전치행렬을 구한다
%*% 두 행렬을 곱한다

산점도

 

https://tonnykang.tistory.com/266?category=1104218

 

반응형