ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • R 기초 7 - DataFrame
    R 2022. 10. 23. 16:24

     

    # DataFrame : 2차원 구조 - 열 단위로 같은 타입의 자료를 기억
    
    # 생성방법1 : vector를 이용 data.frame
    no <- c(1,2,3)
    name <- c('hong', 'lee', 'kim')
    pay <- c(330, 450, 500)
    df <- data.frame(bungo=no, irum=name, imkum=pay) # DataFrame을 만들어주는 함수
    # key=value 값으로 행의 이름을 정해줄 수 있다.
    df
    
    
    <console>
    df
        bungo irum  imkum
    1     1   hong   330
    2     2   lee    450
    3     3   kim    500

    data.frame함수를 사용하면 표로 만들어준다.

    key=value 값으로 행의 이름을 정해줄 수 있다.

     

     

    DataFrame 생성방법1

    # DataFrame : 2차원 구조 - 열 단위로 같은 타입의 자료를 기억
    
    # 생성방법1 : vector를 이용 data.frame
    no <- c(1,2,3)
    name <- c('hong', 'lee', 'kim')
    pay <- c(330, 450, 500)
    df <- data.frame(bungo=no, irum=name, imkum=pay) # DataFrame을 만들어주는 함수
    # key=value 값으로 행의 이름을 정해줄 수 있다.
    df
    class(df)
    mode(df)  # list
    is(df)
    df$irum   # irum만 호출
    
    df <- data.frame(irum=c('james','oscar','tom'),
                     nai=c(22,25,27),
                     row.names = c('one', 'two', 'three'))
    df
    
    nrow(df)       # 열 갯수
    ncol(df)       # 행 갯수
    str(df)        # 문자열로 호출
    summary(df)    # 구조를 호출
    head(df, n=2)  # 앞에거 2개 호출
    tail(df, n=2)  # 뒤에거 2개 호출
    rownames(df)   # 열의 이름 호출
    colnames(df)   # 행의 이름 호출

     

    DataFrame 생성방법2

    # 생성방법2 : matrix를 이용 data.frame
    m <- base::matrix(c(1, 'hong', 150, 2, 'lee', 250, 3, 'kim', 350), 3, by=T)
    m
    mdf <- data.frame(m)  # 표로 호출
    mdf
    
    m <- matrix(1:6, nrow = 3)
    mdf <- data.frame(m)  # 표로 호출
    mdf
    colnames(mdf) <- c("c1", "c2") # 행의 이름을 변경
    mdf
    
    mdf$c1        # 1열호출(나열)
    mdf['c1']     # 1열 출(표 형식)
    mdf[1]        # 1열호출(표 형식)
    mdf[-1]       # 맨 마지막열열호출
    mdf[1,2]      # 1행 2열 호출
    mdf[, 2]      # 2열 호출
    mdf[1,]       # 1행 호출
    mdf[1:2,1:2]
    mdf[2:3,c(1,2)]
    mdf[2:3,c('c1','c2')]
    
    # 조건 지정해 행 출력
    mdf[mdf$c1 == 2,]    # 2행 호출
    subset(mdf, c1 == 2) # 2행 호출
    ?subset
    
    mdf[mdf$c1 == 2 & mdf$c2 == 5,]
    subset(mdf, c1 ==2 & c2 == 5)
    
    mdf[mdf$c1 == 2, c(1, 2)]
    subset(mdf, c1 == 2, select = c(2))
    subset(mdf, c1 == 2, select = c(1, 2))
    
    mdf$c2 <- ifelse(mdf$c2== 4, NA, mdf$c2) # 3항연산자랑 비슷하다.
    # 조건, 참일때, 거짓일때 순이다.
    mdf
    summary(mdf)
    mean(mdf$c1) # 평균 값 구하기
    mean(mdf$c2) # NA값이 들어있으므로 평균값을 못 구함
    mean(mdf$c2, na.rm = T)  # NA(결측) 값을 제외하고 연산
    
    # 행 또는 열 추가
    mdfr <- rbind(mdf, c(10, 11)) # 행 추가
    mdfr
    
    mdfc <- cbind(mdf, c3=c('a','b','c'), c4= c('a1','a2','a3')) # 열추가
    mdfc
    
    # 열 삭제
    mdfc[, 'c1'] <- NULL  # c1열에게 NULL을 주면 삭제된다.
    mdfc
    
    # 행 삭제
    mdfr <- mdfr[-1,]
    mdfr

     

    DataFrame 생성방법3

    # 생성방법3 : 파일을 이용하여 data.frame 생성
    getwd()
    txtdf <- read.table('testdata/emp.txt', header = T)
    txtdf
    is(txtdf)
    
    csvdf <- read.csv('testdata/emp.csv')
    csvdf
    csvdf$이름
    sum(csvdf$급여)   # 모든 급여 합
    mean(csvdf$급여)  # 급여 평균 구하기
    sd(csvdf$급여)    # 표준편차 구하기기

     

    DataFrame을 스크립트 파일로 저장(rdata)하는 법

    # DataFrame을 스크립트 파일로 저장(rdata)
    df <- data.frame(eng=c(90, 80, 70), mat=c(55, 67, 90), class=c(1,2,3))
    df
    write.csv(df, file = 'output/mydf.csv')
    # ?write.csv
    
    save(df, file = 'output/mydf.rda') # R의 형식으로 저장됨
    rm(df)                    # 삭제
    df
    load('output/mydf.rda')   # 읽어오기(out에서)
    df

     

     

    'R' 카테고리의 다른 글

    R 기초 9 - 연산자, if 조건문  (0) 2022.10.24
    R 기초 8 - 객체 file i/o 저장  (0) 2022.10.24
    R 기초 6 - Array, List  (0) 2022.10.23
    R 기초 5 - Matrix(2차원 배열)  (0) 2022.10.23
    R 기초 4 - Vector(1차원 배열)  (0) 2022.10.23

    댓글

Designed by Tistory.