티스토리 뷰

R

데이터 프레임(data frame)

코린이도이 2021. 6. 6. 17:36

1. 데이터프레임 생성하기

  • read.table()함수를 이용하여 외부 텍스트 파일을 불러들이는 방법
  • data.frame() 함수를 이용하여 여러 종류의 자료객체들을 결합시키는 방법
  • #data.frame()함수 이용해서 데이터프레임 생성
    > df<-data.frame(name=c("joey","emily","ellen","ronja"),age=c(21,24,25,25))
    > df
       name age
    1  joey  21
    2 emily  24
    3 ellen  25
    4 ronja  25
    
    #벡터 생성 후 결합하여 데이터프레임 생성
    > name<-c("joey","emily","ellen","ronja")
    > age<-c(21,24,25,25)
    > df1<-data.frame(이름=name,나이=age)
    > df1
       이름 나이
    1  joey   21
    2 emily   24
    3 ellen   25
    4 ronja   25
    
    #특정 컬럼 조회
    > df1$나이
    [1] 21 24 25 25
    
    #행렬 생성 후 데이터프레임으로 변환
    > carinfo<-matrix(c('11km','13km','10km','h사','v사','r사'),ncol=2)
    > carinfo
         [,1]   [,2] 
    [1,] "11km" "h사"
    [2,] "13km" "v사"
    [3,] "10km" "r사"
    > dfr<-as.data.frame(carinfo)
    > dfr
        V1  V2
    1 11km h사
    2 13km v사
    3 10km r사
    
    #컬럼명을 지정하기 위해 names()함수 사용
    > names(dfr)<-c("연비","제조사")
    > dfr
      연비 제조사
    1 11km    h사
    2 13km    v사
    3 10km    r사

2. read.table()함수 이용하여 데이터프레임 생성

  • 외부 파일을 읽어와서 데이터프레임 생성
  • read.table("외부파일 경로지정")
  • 머릿글이 존재할 경우 header=TRUE를 작성하여 불러옴
    • ex) info<-read.table("C:\\Rs\\personal.txt",header=TRUE)

3. 데이터프레임 합치기

  • 여러 데이터프레임을 합치는 작업
  • 열 방향으로 합치기 - cbind()함수, 행 방향으로 합치기 - rbind()함수 이용
  • 데이터프레임에서 중복된 열이 있을 경우 merge()함수 이용하여 병합
  • #lifeinfo 데이터프레임 생성
    > lifeinfo<-data.frame(취미=c("목공예","패러글라이딩","등산","독서","트래킹"),관심사=c("취업","아파트분양","주택대출","이직","교통인프라"))
    > lifeinfo
              취미     관심사
    1       목공예       취업
    2   패러글라이딩   아파트분양
    3         등산   주택대출
    4         독서      이직
    5       트래킹   교통인프라
    
    #pinfo 데이터프레임 생성
    > pinfo<-data.frame(이름=c("민수","정수","지연","윤정","주연"),거주지역=c("인천","경기","서울","서울","인천"),나이=c(25,33,43,35,37),성별=c("남","여","남","여","남"))
    
    #pinfo, lifeinfo 열방향으로 합치기
    > myinfo<-cbind(pinfo,lifeinfo)
    > myinfo
      이름 거주지역 나이 성별         취미     관심사
    1 민수     인천   25   남       목공예       취업
    2 정수     경기   33   여  패러글라이딩    아파트분양
    3 지연     서울   43   남         등산   주택대출
    4 윤정     서울   35   여         독서       이직
    5 주연     인천   37   남       트래킹   교통인프라
    
    #otherinfo 데이터프레임 생성
    > otherinfo<-data.frame(이름=c("성주","준영"),거주지역=c("강원","충북"),나이=c(42,45),성별=c("여","여"))
    > otherinfo
      이름 거주지역 나이 성별
    1 성주     강원   42   여
    2 준영     충북   45   여
    
    #행 방향으로 합치기
    > totinfo<-rbind(pinfo,otherinfo)
    > totinfo
      이름 거주지역 나이 성별
    1 민수     인천   25   남
    2 정수     경기   33   여
    3 지연     서울   43   남
    4 윤정     서울   35   여
    5 주연     인천   37   남
    6 성주     강원   42   여
    7 준영     충북   45   여
    
    #pjobinfo 데이터프레임 생성
    > pjobinfo<-data.frame(이름=c("민수","정수","지연","윤정"),직업=c("학생","공무원","회사원","자영업"))
    > pjobinfo
      이름   직업
    1 민수   학생
    2 정수 공무원
    3 지연 회사원
    4 윤정 자영업
    
    #pinfo와 pjobinfo의 겹치는 원소한 프레임 합치기
    > merge(pinfo,pjobinfo)
      이름 거주지역 나이 성별   직업
    1 민수     인천   25   남   학생
    2 윤정     서울   35   여 자영업
    3 정수     경기   33   여 공무원
    4 지연     서울   43   남 회사원

4. 데이터프레임 조작작업

  • subset()함수 이용하여 특정 컬럼만으로 이루어진 프레임 생성
  • 데이터프레임에 컬럼을 추가하는 작업
  • 특정 행/열을 삭제하는 작업
  • #거주지역 열을 제외한 데이터프레임 생성
    > data1<-subset(pinfo,select=-거주지역)
    > data1
      이름 나이 성별
    1 민수   25   남
    2 정수   33   여
    3 지연   43   남
    4 윤정   35   여
    5 주연   37   남
    
    #결혼 열 추가
    > data2<-cbind(pinfo,결혼=c(FALSE,TRUE,TRUE,FALSE,FALSE))
    > data2
      이름 거주지역 나이 성별  결혼
    1 민수     인천   25   남 FALSE
    2 정수     경기   33   여  TRUE
    3 지연     서울   43   남  TRUE
    4 윤정     서울   35   여 FALSE
    5 주연     인천   37   남 FALSE
    
    #3행 삭제
    > data2[-3,]
      이름 거주지역 나이 성별  결혼
    1 민수     인천   25   남 FALSE
    2 정수     경기   33   여  TRUE
    4 윤정     서울   35   여 FALSE
    5 주연     인천   37   남 FALSE
    
    #5열 삭제
    > data2[,-5]
      이름 거주지역 나이 성별
    1 민수     인천   25   남
    2 정수     경기   33   여
    3 지연     서울   43   남
    4 윤정     서울   35   여
    5 주연     인천   37   남

 

'R' 카테고리의 다른 글

함수(function)  (0) 2021.06.06
조건제어문(if, ifelse, for, while, repeat)  (0) 2021.06.06
리스트(list)와 행렬(matrix)  (0) 2021.06.06
벡터(vector)  (0) 2021.06.06
R의 데이터 구조  (0) 2021.06.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 30 31
글 보관함