ADsP R기초

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

데이터프레임★

데이터 프레임이 뭔가?

데이터 프레임은 데이터 분석에서 가장 자주 쓰는 객체 자료형입니다. 엑셀의 표처럼 되어 있는 데이터 모음입니다. 생긴 건 비슷하지만 행렬과는 다르고, 오히려 리스트에 가깝습니다. (행렬과 리스트에 대해서는 나중에 설명합니다)

가로 줄을 행(row)이라고 부르고, 세로줄은 열(column)이라 합니다. 각 열마다 어떤 자료인지 설명해주는 이름이 붙어 있습니다. 이걸 열 이름(column name)이라 부릅니다.

dataframe에 대한 이미지 검색결과

데이터 프레임 만들기

데이터 프레임은 보통 csv나, dat, 엑셀 파일 같은 걸 읽어와서 만듭니다. 하지만 이건 파일 입출력에서 배워보고요. 이번에는 벡터를 합쳐서 데이터 프레임을 만들어보겠습니다.

> days <-  1:10 + today
> days[1:4]
[1] "2019-11-30" "2019-12-01" "2019-12-02" "2019-12-03"
> names <- c("김태희", "이지우", "강수지", "하충재")

> patientData <- data.frame(names, days[1:4])
> patientData
   names  days.1.4.
1 김태희 2019-11-30
2 이지우 2019-12-01
3 강수지 2019-12-02
4 하충재 2019-12-03

데이터 프레임은 만들었는데 열 이름이 마음에 안듭니다. 이게 환자 데이터(patientData)라 합시다. 그러니 환자 이름과, 예약한 날짜가 들어있는 데이터인 셈입니다. 예약 날짜 같은 식으로 열 이름을 바꿔보고 싶습니다.

> colnames(patientData)
[1] "names"     "days.1.4."
> colnames(patientData) <- c("환자이름", "예약 날짜")
> patientData
  환자이름  예약 날짜
1   김태희 2019-11-30
2   이지우 2019-12-01
3   강수지 2019-12-02
4   하충재 2019-12-03

 

데이터 프레임 살펴보기 head(), tail(), summary()

이번에는 데이터 프레임에 쓰는 다양한 함수들을 알아보겠습니다. R에 내장되어 있는 데이터를 불러와서 써보겠습니다. 먼저 통계학자 피셔가 발표한 iris데이터를 보겠습니다. iris는 붓꽃의 품종과 꽃잎 길이, 너비에 대한 데이터입니다.

#아이리스를 그냥 불러오면 140개나 되는 데이터가 화면을 가득 채웁니다.
> iris
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa
4            4.6         3.1          1.5         0.2     setosa
5            5.0         3.6          1.4         0.2     setosa
(중략)
(중략)
(중략)
(중략)
(중략)
145          6.7         3.3          5.7         2.5  virginica
146          6.7         3.0          5.2         2.3  virginica
147          6.3         2.5          5.0         1.9  virginica
148          6.5         3.0          5.2         2.0  virginica
149          6.2         3.4          5.4         2.3  virginica
150          5.9         3.0          5.1         1.8  virginica

처음이나 마지막 몇 개만 표본으로 살펴보면 편합니다. 그래서 head()와 tail()함수를 씁니다. 머리랑 꼬리라는 뜻입니다.

> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

> tail(iris)
    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
145          6.7         3.3          5.7         2.5 virginica
146          6.7         3.0          5.2         2.3 virginica
147          6.3         2.5          5.0         1.9 virginica
148          6.5         3.0          5.2         2.0 virginica
149          6.2         3.4          5.4         2.3 virginica
150          5.9         3.0          5.1         1.8 virginica

마지막으로 데이터 프레임에 각 열의 통계값을한 번에 요약해서 볼 수 있는 함수가 있습니다. 바로 summary()입니다.

summary(iris) 
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width          Species  
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100   setosa    :50  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300   versicolor:50  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300   virginica :50  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199                  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800                  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500                  

Min / Max 최소값과 최대값입니다.

Mean 평균값

1st Qu / 3rd Qu 1분위 4분위 값. 전체 데이터를 4등분해서 1/4 과 3/4에 해당하는 값입니다.

Median 중앙값, 전체 데이터를 4등분해서 중앙에 있는 값입니다.

Mean(평균값), Median(중앙값), Mode(최빈값)에 대해서는 R통계 편에서 더 자세히 다뤄보겠습니다.

 

기출 연습 문제 (단답형)

데이터 프레임의 마지막 6개 행을 볼 수 있는 함수는 무엇인가?

답 : tail()          

데이터 프레임의 각 열의 최대, 최소, 평균, 중앙값, 4분위 값을 요약해서 볼 수 있는 함수는 무엇인가?

답 : summary()

데이터 프레임의 첫 6개 행을 볼 수 있는 함수는 무엇인가?

답 : head()       

정답은 드래그해서 확인하세요.

댓글

댓글 본문
작성자
비밀번호
버전 관리
Taehee Kim
현재 버전
선택 버전
graphittie 자세히 보기