프로그래밍 /R

[R 자료구조] 2. 벡터 타입 데이터 & 특수 데이터 유형

yooj_lee 2019. 6. 11. 16:57
300x250

1. 벡터 타입 데이터

: 타입이 동일한 원소들의 모음으로서 c(element1, element2, element3, ...)로 정의된다. 1차원 속성(일렬로 데이터를 늘어뜨림)으로서 행과 열 간의 구분이 없다. row vector, column vector의 구분 또한 존재하지 않는다. 

다양한 원소 속성을 담지 못하기 때문에 여러 타입의 원소가 전달될 경우, 대부분 문자로 알아서 데이터 타입을 치환한다.

R은 벡터화 언어라는 특성때문에, 벡터를 함수의 인자로 전달할 경우 별다른 반복문 없이도 벡터 내를 돌며(반복) 자동으로 동일 작업을 수행한다.

 

1.1. 벡터 연산

ex) 10개의 숫자를 가진 vector의 각 원소에 3을 곱하고자 한다.

파이썬의 경우 for문을 사용해야겠지만, R의 경우에는 별다른 반복문 없이 이를 시행할 수 있다(vectorize).

x<- sample(1:30, 10) 

x * 3

 간-단.

 

곱셈 이외에도 사칙 연산, 기타 여러 작업에도 적용할 수 있다.

cf.) : 연산자

어느 방향으로든 연속적인 숫자를 만들어 내는 기능 수행

10:1 -> 10 9 8 ... 1

5: -7 -> 5 4 3 2 ... -6 -7

 

길이가 같은 두 벡터가 있을 때, 두 벡터에서 대응되는 각 원소는 함께 연산될 수 있다.

x <- 1:10

y <- -5:4

x+y, x-y, x*y, x/y등 가능.

 

길이가 다른 두 벡터도 연산이 가능하다. v1, v2가 있다고 가정하자(len(v1) < len(v2)).

이때, v2가 반복적으로 재사용되며, len(v2) != n*len(v1) (n은 자연수)면 경고 메세지가 출력됨.

 

벡터의 각 원소는 대괄호를 사용하여 접근한다. 인덱스의 시작은 0이 아닌 1부터다.

cf.) 벡터 생성 시 또는 생성 후 벡터에 이름을 부여할 수 있다.

1) c(One = 'a', Two = 'y', Last = 'r')

2) w <- 1:3

names(w) <- c("One", "Two", "Three")

 

1.2. factor 벡터 (factor형 데이터)

범주형 데이터를 표현하기 위한 데이터 타입. 명목형, 순서형 변수를 표현.

*범주형 데이터(categorical data): 사전에 정해진 특정 유형(목록)으로만 분류되는 경우 (이때 이 특정 유형들을 level 이라고함)

1) 순서형 변수(ordinal)

: level 간 순서의 차이가 있는 경우(값에 순서를 두는 경우)

ex) 대학 성적 (A B C D F : order 존재)

2) 명목형 변수(nominal)

: 값들 간 크기 비교가 불가능, 무의미한 경우

ex) 1반 2반 3반 4반 5반 (숫자의 순서가 무의미하다.)

 

기본적으로 factor는 각 level에 특정 integer를 부여하며, 그후에 이를 다시 character로 표현해서 보여준다. 따라서, as.numeric(factor's level)을 실행시키면 해당 레벨에 부여된 정수가 리턴된다. 이러한 특성으로 인해 나중에 이를 이용해 연산을 할 경우, 필요에 따라 character로 변환해야할 수 있다.

 

3. 특수 데이터 유형

3.1. 누락 데이터

1) NA: 결측값(missing value, 값이  빠져있음)

→ 관측이 되지 않은 값(관측에 실패한 값); Not Available

is.na()함수로 해당 변수가 na인지 혹은 해당 벡터가 na값을 가지고 있는지에 대해 알 수 있다.

2) NULL : 데이터 유형과 자료의 길이도 0인 비어있는 값

→ NULL은 원자적, 즉 여러 데이터 타입을 가지지 않으며 벡터 안에 존재할 수 없다. 벡터 안에 NULL을 집어넣는다고 해도 사라진다.

ex) z<- c(1, NULL, 3)

z

1 3

NULL 또한 NA와 마찬가지로 is.null() 함수를 통해 NULL인지 아닌지 확인할 수 있다. 그러나 NULL은 벡터의 원소가 될 수 없으므로 벡터화된 동작을 하지는 않는다.

3.2. 기타

1) NaN: 수학적으로 정의가 불가한 수

2) Inf: 무한값(infinite) → 분모가 0일 시에 자주 등장.

 

 

300x250