R은 데이터 분석을 위한 언어로서 오픈소스 타입으로 다양한 패키지를 이용하여 여러 솔루션을 도출해낼수 있다. 

그 전 R에서 사용되는 데이터타입에 대한 간단한 정리를 통해 앞으로 진행할 분석에 활용할 예정이다.


R의 데이터 타입은 다음과 같이 정리할 수 있다

  • 백터: R의 최소단위의 데이터 타입으로서, 문자형 실수형 논리형 명목형의 네 가지 타입으로 나눠진다

  • 팩터: 명목형 범주형을 위한 일차원의 벡터 타입 

  • 리스트: 다양한 데이터 타입이 조합된 일차원의 데이터 타입 

  • Data Frame: 다양한 데이터 타입들이 조합된 이차원의 배열  

  • 매트릭스: (주로)수치형 데이터를 위한 이차원 배열 


글만 봐선 무슨소리인지 잘 이해가 안간다. 아래 코드와 함께 보자


1
2
3
4
# Scala
이름<-c("나래")
섭외인기<-c("75.8")
코메디언<-c(TRUE)
cs
우선 스칼라부터 알아보겠다. 스칼라는 한 개의 백터로 이루어진 데이터 타입으로 
각각 문자형, 문자형, 논리형의 벡터 한개가 들어가 있음을 알 수 있다.

1
2
3
4
#vector 
이름<-c("나래","지코","혁수")
섭외인기<-c(75.8,98.2,33.5)
코메디언<-c(TRUE,FALSE,TRUE)
cs

다음은 백터이다. 위에서 말한것과 같이 문자형, 숫자형, 논리형으로 구성되어 있다.

1
is(코메디언) # 타입 확인
cs
is(XX) 함수는 XX의 데이터 타입을 알아볼 수 있는 함수이다.
성별이라는 변수에 여 여 남을 담고 이를 팩터로 처리하였다.
여기서 레벨은 우선순위를 말하는 것으로 가나다 순서로 처리되어 남자가 여자보다 앞선것을 알 수 있다.

1
2
3
4
5
6
> #factor 순서
> 성별<-factor(c("여","남","남"),ordered = 1)
> 성별<-factor(c("여","남","남"),ordered=T)
> 성별
[1] 여 남 남
Levels: 남 < 여
cs
여기선 ordered=T (혹은 1)을 사용하여 "내가 순서대로 변수를 입력했음"을 알 수 있다. 
즉 위처럼 특별히 설정을 해주지 않으면 A..Z 혹은 가..하 순으로 우선순위를 부여하지만, ordered 를 사용하면 입력한 순서가 즉 우선순위가 되는 것이다. 


1
2
3
#facotr 혈액형 
혈액형 = factor(c("B","O","A"),
                levels=c("A","B","O"))
cs

귀찮다면 순서를 아무렇게 쓰고 마지막 levels 를 이용하여 다시 순서를 정해주면 된다. 

위 예시대로면 순서는 A>B>O 순으로 우선순위가 부여된다.


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
#list
박나래<-list(fullname=이름[1],
              섭외인기 = 섭외인기[1],
              코메디언 = 코메디언[1],
              성별=성별[1],
            혈액형 = 혈액형[1])
 
> 박나래[5]
$혈액형
[1] B
Levels: A B O
 
> 박나래$성
[1] 여
Levels: 남 < 여
 
박나래[c("성별",
       "섭외인기")] 
 
$성별
[1] 여
Levels: 남 < 여
 
$섭외인기
[175.8
cs

다음은 리스트에 관한 설명이다. 아까 이야기했던 것처럼 리스트는 여러 데이터 타입의 변수를 담을 수 있는 일차원의 공간이다. 


위 예시를 바탕으로 설명하면 이름의 "첫번째" 벡터를 fullname에 담아 리스트에 저장하고, 섭외인기의 "첫번째" 변수를 담고 그 이름을 섭외인기로 하여 리스트에 저장하고... 순서로 진행된다. 


아래 예시는 "박나래" 리스트의 다섯번째 항목을 출력하라는 것이다 (박나래[5]). 이 상황에서는 기존에 존재하던 혈액형 벡터의 첫번째 값인 B가 '혈액형'이라는 이름으로 리스트에 저장되었는데, 이 저장된 순서가 다섯번째니 혈액형이 출력이 되는 것이다. 


한편 리스트에 속한 변수 이름으로도 호출할 수 있다. 박나래$성별, 혹은 다수의 변수를 호출할 경우 박나래[c("호출할변수1","호출할변수2)]꼴로도 진행 가능하다.



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
29
#data frame
사람들 <- data.frame(이름,섭외인기,코메디언,성별,혈액형)
 
사람들
 
//##결과 
 
  이름 섭외인기 코메디언 성별 혈액형
1 나래     75.8     TRUE   여      B
2 지코     98.2    FALSE   남      O
3 혁수     33.5     TRUE   남      A
 
 
View(사람들) // 새 창으로 출력 
 
>사람들[2,4]
[1] 남
Levels: 남 < 여
 
 
> 사람들[1,]
  이름 섭외인기 코메디언 성별 혈액형
1 나래     75.8     TRUE   여      B
 
> 사람들[1]
  이름
1 나래
2 지코
3 혁수
cs

다음은 데이터 프레임이다. 데이터 프레임은 다양한 타입의 변수를 모두 포함할 수 있는 이차원의 공간이다. 


위에서 선언한 이름, 섭외인기, 코메디언, 성별, 혈액형 변수를 한 개의 데이터프레임화 하여 "사람들"에 저장한다. 그 결과는 위와 같으며 만약 View(사람들) 을 할경우 새로운 창으로 볼 수 있다.


데이터 타입의 레코드는  * 데이터프레임이름[원하는행,원하는열] * 꼴로 검색할 수 있다. 

사람들[2,4]가 그 예시이다. 한편 사람들[1,]꼴로 행이나 열에 대한 부분을 비워두게 되면, 선택한 행(열)에 해당하는 모든 정보를 저장하겠다는 것이다. 


 

+ Recent posts