데이터의 종류 - 변수 구분
변수 - 질적 변수 - 명목형 변수(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 |