본문 바로가기

R

1.2. 데이터에 대해서

데이터의 종류 - 변수 구분

변수 - 질적 변수 - 명목형 변수(factor) : ex) {남, 여}, {기독교, 불교, 천주교}, {A, B, AB, O}

변수 - 질적 변수 - 순서형 변수(ordered) : ex) {A+, A, A-, B+, ...}

변수 - 양적 변수 - 이산형 변수

변수 - 양적 변수 - 연속형 변수

-> 자료 유형에 따라 통계분석기법이 달라진다.

Data in R

R은 SQL, Excel과 같은 데이터를 관리하는 도구에서 데이터를 불러와 분석을 하는 프로그램이다.

프로그래밍의 가장 작은 원소 데이터 : Scalar (Float, Integer, String, Boolean)

R의 기본 데이터 단위 : Vector {Scalar, Scalar, Scalar, ...}

=> R은 통계를 위해 만들어진 프로그램이다 !

Vector 여러개가 모여서 Dataframe을 만들고, R은 이 dataframe을 분석하는 것이다.

R에는 4가지 종류의 벡터가 있다.

1. Character(문자열)

2. Factor : 순서형 변수 / 명목형 변수

3. Integer(정수) : 이산형 변수

4. Numeric(실수) : 연속형 변수

예시)

> a <- c(1,2,3,4,5)

> a

[1] 1 2 3 4 5

> is(a)

[1] "numeric" "vector"

# Integer가 아니라 numeric으로 인식 : R은 따로 정해주지 않으면 큰 개념을 사용.

> aL <- c(1L, 2L, 3L)

> aL

[1] 1 2 3

> is(aL)

[1] "integer" "numeric" "vector" "data.frameRowLabels"

# 숫자 뒤에 L을 붙이면 integer로 인식.

=> 굳이 ?? : Bigdata를 다룰 때 integer 연산이 훨씬 빨라 필수임.

# is()에서, 포함된 범주는 전부 언급됨. integer < numeric < vector < data.frameRowLabels

> b <- c(1,2,3,"가")

> b

[1] "1" "2" "3" "가"

> is(b)

[1] "character" "vector" "data.frameRowLabels" "SuperClassMethod"

#앞서 말했듯, 하나의 vector의 문자 형식은 통일된다. character가 있으므로 1,2,3도 character로 정의.

#참고 : as.factor = factor / as.ordered = ordered

명목형 변수 만들기

m <- factor(m)

> m <- c("삼성", "LG", "현대", "SK")

> is(m)

[1] "character" "vector" "data.frameRowLabels" "SuperClassMethod"

> m <- factor(m)

> m

[1] 삼성 LG 현대 SK

Levels: LG SK 삼성 현대

> is(m)

[1] "factor" "integer" "oldClass" "double" "numeric" "vector" "data.frameRowLabels"

# 명목형 변수는 {1,2,3,4,...}로 자동 변환 가능하다. 그래서 이 객체 안에는 integer 값이 들어가 있다.

# 명목형 변수이기에 Levels에 순서가 표기되어 있지 않다.

> m2 <- c("나","다")

> m2 <- factor(m2, ordered=F)

> m2

[1] 나 다

Levels: 나 다

> is(m2)

[1] "factor" "integer" "oldClass" "double" "numeric" "vector" "data.frameRowLabels"

# 기본값은 ordered=F이고, 이는 순서형 변수가 아닌 명목형 변수로 지정한다는 것임.

> is.ordered(m2)

[1] FALSE

순서형 변수 만들기

m <- factor(m, ordered=T) or m3 <- ordered(m3)

m4 <- ordered(c(), levels=c())

> m <- factor(m, ordered=T)

> m

[1] 삼성 LG 현대 SK

Levels: LG < SK < 삼성 < 현대

> is(m)

[1] "ordered" "factor" "integer" "oldClass" "double" "numeric" "vector" "data.frameRowLabels"

> m2 <- c("나","다")

> m2 <- factor(m2)

> m2

[1] 나 다

Levels: 나 다

> is(m2)

[1] "factor" "integer" "oldClass" "double" "numeric" "vector" "data.frameRowLabels"

# ordered=T를 제외하자 Levels는 보이지만 순서가 정의되어 있지 않다.

> m3 <- c("가","나","다")

> m3 <- ordered(m3)

> m3

[1] 가 나 다

Levels: 가 < 나 < 다

> is.ordered(m3)

[1] TRUE

> m4 <- factor(c("가","나","다","라"), levels=c("다","라","가","나"))

> m4

[1] 가 나 다 라

Levels: 다 라 가 나

> m4 <- factor(c("가","나","다","라"), levels=c("다","라","가","나"), ordered=T)

> m4

[1] 가 나 다 라

Levels: 다 < 라 < 가 < 나

> m4 <- ordered(c("가","나","다","라"), levels=c("다","라","가","나"))

> m4

[1] 가 나 다 라

Levels: 다 < 라 < 가 < 나

# Levels를 직접 지정할 수 있다. Factor를 쓸 때에는 반드시 ordered=T를 유의할 것. 차라리 그냥 처음부터 ordered를 쓰자.

'R' 카테고리의 다른 글

1.4 Attach 함수에 대하여  (0) 2021.07.04
1.3. Dataframe  (0) 2021.07.01
1. R 기초 : 함수와 객체  (0) 2021.06.27