본문 바로가기

[2016 - 2019] 학부 정리/4학년

[4학년 - 빅데이터기술] R프로그래밍


데이터 조작 : iris데이터, csv 파일 입출력, apply()함수들, 여러 함수들

-모든객체 삭제

-rm(list = ls())


 1. iris데이터 사용하기

 head(iris) - 붓꽃 데이터가 데이터 프레임으로 저장되어 있음

 iris3 - 3차원 배열 형태로 저장되어 있음


 다양항 데이터 셋 보려면 : library(help=datasets)

 실전 데이터를 사용할 때 : data(데이터 셋 이름) 


 2. 파일 입출력 (csv파일) ?? 이해 X -> ppt.6

  document에 csv파일 직접 저장하면 read.csv("파일명.csv")로 불러올 수 있다.


  ### csv파일로 저장

  > write.csv(x, "b.csv", row.names = F)

  > read.csv("b.csv")

    id   name score

  1  1 python    98

  2  2   ruby    78

  3  3    foo    86

  > write.csv(x, "b.csv", row.names = T)

  > read.csv("b.csv")

    X id   name score

  1 1  1 python    98

  2 2  2   ruby    78

  3 3  3    foo    86

 


3. save() load()

  ### save() load()

  ### binary형태로 객체를 입출력

  > x<- 1:5

  > y <- 6:10

  > save(x,y,file = "xy.RDate")


  > load("xy.RDate")  #파일로부터 데이터를 불러들이는 함수 

  > x


 4. rbin(), cbind() : 행 또는 열 형태로 주어진 데이터를 합쳐서 행렬 또는 데이터 프레임을 만드는데 사용

  ### 행렬

  > rbind(c(1,2,3),c(4,5,6))

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

   [1,]    1    2    3

   [2,]    4    5    6

  > cbind(c(1,2,3),c(4,5,6))

        [,1] [,2]

   [1,]    1    4

   [2,]    2    5

   [3,]    3    6


  ### 데이터 프레임의  rbind()

  >x <- data.frame(id=c(1,2), name=c("a", "b"), stringsAsFactors=F

    #stringsAsFactors=F이것은 name의 컬럼 데이터를 factor가 아니라 문자열로 취급한다. 따라서 rbin()를 할 수 있다.

  > x

     id name

   1  1    a

   2  2    b

  > y <- rbind(x,c(3,"c"))

  > y

     id name

   1  1    a

   2  2    b

   3  3    c

  

  > x

     id name

   1  1    a

   2  2    b

  > y<-cbind(x, greek=c('alpha','beta'))

  > y

     id name greek

   1  1    a alpha

   2  2    b  beta

 ***데이터프레임은 열을 추가할 때 cbind() 말고 변수명$컬럼명 <- 데이터 형태로 열을 추가할 수 있다.



 5. apply 함수들 

  ### apply() : 행렬의 행 또는 열방향으로 특정 함수를 적용하는데 사용,

  ### apply(행렬, 방향, 함수) 형태로 호출

  ## 1) apply(행렬, 방향, 함수) - 벡터에는 적용 안됨, 벡터는 그냥 sum사용하면 됨

  ##1 : 행 방향, 2 : 열 방향

  > sum(1:10)

   [1] 55

  > d <- matrix(1:9, ncol=3)

  > d

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

   [1,]    1    4    7

   [2,]    2    5    8

   [3,]    3    6    9

  > apply(d, 1, sum)

   [1] 12 15 18

  > apply(d, 2, sum)

   [1]  6 15 24

  

  > apply(iris[,1:4], 2, sum)

   Sepal.Length  Sepal.Width Petal.Length  Petal.Width 

          876.5        458.6        563.7        179.9

 

  #자주 사용하므로 rowSums(), colSums()함수가 정의 되어 있다.

  > colSums(iris[,1:4])

   Sepal.Length  Sepal.Width Petal.Length  Petal.Width 

          876.5        458.6        563.7        179.9 

  #rowMeans(), colMeans()를 통해서도 계산할 수 있다. (평균)

   > colMeans(iris[,1:2])

   Sepal.Length  Sepal.Width 

       5.843333     3.057333


  ## 2) lapply(x, 함수) - x는 벡터 또는 리스트, 데이터 프레임등 가능 / 결과는 리스트 형태

  입력이 vector, list, data frame 형태인것들을 리스트나 unlist 형태로 출력 하는 것.

   vector, list, data frame 입력 형태 다시 확인 하기????????????

   - 벡터로 받기

 

   - 리스트로 받기

   > x<-list(a=1:3, b=4:6)

   > x

    $a

    [1] 1 2 3


    $b

    [1] 4 5 6

    ##평균 구하기

   > lapply(x,mean)

    $a

    [1] 2


    $b

    [1] 5


   > lapply(x,sum)

    $a

    [1] 6


    $b

    [1] 15


  - 데이터 프레임으로 받기