관리 메뉴

Hee'World

R의 기본 자료형 본문

Programming/R

R의 기본 자료형

Jonghee Jeon 2014. 3. 29. 19:16

1. 벡터(vector)

  한가지 데이터형만 저장할 수 있는 자료형 구조


> j <- c(1,2,3,4,1004)

> j

[1]    1    2    3    4 1004

> typeof(v)

[1] "double"

> typeof(j)

[1] "double"

> j <- c(1,2,3,4,1004)

> j

[1]    1    2    3    4 1004

> j[1]

[1] 1

> j[4]

[1] 4

> j[1:3]

[1] 1 2 3


2. 리스트(list)

벡터와 비슷하게 자료를 저장할 수 있는 자료형 구조이지만 여러종류의 데이터형을 리스트 형태로 저장 할 수 있는 구조


> j <- list(1,2,3,"jonghee")

> j

[[1]]

[1] 1


[[2]]

[1] 2


[[3]]

[1] 3


[[4]]

[1] "jonghee"


> typeof(j[4])

[1] "list"

> typeof(j[[4]])

[1] "character"

> typeof(j[[3]])

[1] "double"

> j <- list(name = "종희", age="27")

> j

$name

[1] "종희"


$age

[1] "27"


> j["name"]

$name

[1] "종희"


> j$name <- "종2"

> j

$name

[1] "종2"


$age

[1] "27"


3. 배열과 행렬

  배열은 주로 3차원 이상의 데이터를 다룰 때 사용되고, 행렬은 수학에서의 행렬과 동일한 성격을 가지고 있는 데이터 구조며, 2차원 벡터를  다룬다. 벡터와는 차원 속성의 유무만 다르고 나머지는 동일하다.


> j <- array(1:3, c(2,5,2))

> j

, , 1


     [,1] [,2] [,3] [,4] [,5]

[1,]    1    3    2    1    3

[2,]    2    1    3    2    1


, , 2


     [,1] [,2] [,3] [,4] [,5]

[1,]    2    1    3    2    1

[2,]    3    2    1    3    2


> is.array(arr)

Error: object 'arr' not found

> is.array(j)

[1] TRUE

> jj <- matrix(1:10)

> jj

      [,1]

 [1,]    1

 [2,]    2

 [3,]    3

 [4,]    4

 [5,]    5

 [6,]    6

 [7,]    7

 [8,]    8

 [9,]    9

[10,]   10

> jj2 <- matrix(1:10, nrow=2, ncol = 5)

> jj2

     [,1] [,2] [,3] [,4] [,5]

[1,]    1    3    5    7    9

[2,]    2    4    6    8   10

> dim(jj)

[1] 10  1

> dim(jj) <- c(2,5)

> jj

     [,1] [,2] [,3] [,4] [,5]

[1,]    1    3    5    7    9

[2,]    2    4    6    8   10

> jj[2,3]

[1] 6

> jj[2,]

[1]  2  4  6  8 10

> jj[,3]

[1] 5 6

> jj[c(1,2), c(1,2,3)]

     [,1] [,2] [,3]

[1,]    1    3    5

[2,]    2    4    6

> jj[,1,drop=FALSE]

     [,1]

[1,]    1

[2,]    2

> jj[,1]

[1] 1 2

> jj

     [,1] [,2] [,3] [,4] [,5]

[1,]    1    3    5    7    9

[2,]    2    4    6    8   10

> rownames(jj) <- c("1번","2번")

> colnames(jj) <- c("첫번째","두번째","세번째")

Error in `colnames<-`(`*tmp*`, value = c("첫번째", "두번째", "세번째")) : 

  length of 'dimnames' [2] not equal to array extent

> jj

    [,1] [,2] [,3] [,4] [,5]

1번    1    3    5    7    9

2번    2    4    6    8   10

> colnames(jj) <- c("first","sencond","third","fourth",

+                   "fifth")

> jj

    first sencond third fourth fifth

1번     1       3     5      7     9

2번     2       4     6      8    10


4. 데이터프레임

  R에서 가장 널리 활용되는 데이터 구조이며, 행렬과 유사하지만 행렬과는 다르게 각 열이 다른 데이터 타입을 가질 수 있다. sqldf라는 패키지를 이용하여 데이터프레임을 조작 할 수도 있다.


> jong <- data.frame(id = c("1004jonghee","Heeworld","hul","Zeon"), score = c(100,90,95,99)

+ )

> jong

           id score

1 1004jonghee   100

2    Heeworld    90

3         hul    95

4        Zeon    99

> names(jong)

[1] "id"    "score"

> dim(jong)

[1] 4 2

> str(jong)

'data.frame': 4 obs. of  2 variables:

 $ id   : Factor w/ 4 levels "1004jonghee",..: 1 2 3 4

 $ score: num  100 90 95 99

> summary(jong)

           id        score       

 1004jonghee:1   Min.   : 90.00  

 Heeworld   :1   1st Qu.: 93.75  

 hul        :1   Median : 97.00  

 Zeon       :1   Mean   : 96.00  

                 3rd Qu.: 99.25  

                 Max.   :100.00  

> nrow(jong)

[1] 4

> ncol(jong)

[1] 2

> jong[1,2]

[1] 100

> jong[1,c(1,2)]

           id score

1 1004jonghee   100

> jong$score

[1] 100  90  95  99

> jong[jong$score > 95,]

           id score

1 1004jonghee   100

4        Zeon    99

> jong[jong$id == "1004jonghee",]

           id score

1 1004jonghee   100

> jong2 <- jong

> jong2[, "score"] <- jong2[,"score"] + 1

> jong2

           id score

1 1004jonghee   101

2    Heeworld    91

3         hul    96

4        Zeon   100

> transform(jong, score = score+1)

           id score

1 1004jonghee   101

2    Heeworld    91

3         hul    96

4        Zeon   100




                        --"R로 하는 데이터시각화" 참고 -- 

'Programming > R' 카테고리의 다른 글

sqldf 함수  (0) 2014.03.29
tapply, aggregate, by 함수  (0) 2014.03.29
[R_Error] Error in loadNamespace(i, c(lib.loc, .libPaths())) :  (0) 2013.11.01
기초 통계 용어 (Outlier)  (0) 2013.10.31
R을 위한 기초 통계  (0) 2013.10.29
Comments