(2017년 업데이트 하면서, R(3.4.2버전), R Notebook 으로 작성되었습니다.) > data.frame 다루기
data.frame에 대해 알아봅시다
데이터 프레임은 R의 핵심적인 자료구조로서,
쉽게 말해 엑셀과 같이 숫자, 문자 등 다양한 데이터를 하나의 테이블에 담을 수 있는 자료구조입니다.
이를 잘 활용하면 엑셀의 기능들을 R에서도 자유자제로 사용할 수 있습니다.
먼저 데이터 데이터 프레임을 생성하는 방법은 다음과 같습니다.
df <- data.frame(col1=c('a','b','c','d','e') , col2=c(2, 4, 6, 8, 10))
df
#
#
#
#
#
#
생성한 데이터 프레임의 구조는 아래와 같이 파악할 수 있습니다.
?str()
head(df)
#
#
#
#
#
#
str(df)
#
#
#
summary(df)
#
#
#
#
#
#
#
str(iris)
#
#
#
#
#
#
head(iris)
#
#
#
#
#
#
#
summary(iris)
#
#
#
#
#
#
#
#
#
#
#
#
#
#
- data.frame의 row, column 접근하기
df <- data.frame(col1=c('a','b','c','d','e') , col2=c(2, 4, 6, 8, 10))
df$col1
## [1] a b c d e
## Levels: a b c d e
df[1,]
#
#
df[,2]
#
df <- data.frame(col1=c('a','b','c','d','e') , col2=c(2, 4, 6, 8, 10))
df$col3 <- c(1,2,3,4,5)
df
#
#
#
#
#
#
Quiz
R에 기본 내장되어 있는 iris 데이터를 활용하여 아래 질문에 답하시오.
head(iris)
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
- 각 row의 Sepal.Length와 Sepal.Width의 값을 더하여 Sepal.Sum이라는 column을 추가하세요
#
#
#
#
#
#
#
** 참고) df[1,] 과 df[1, ,drop=T]의 차이는?
class(df[1,])
#
class(df[1, ,drop=T])
#
dataframe 이름 바꾸기
df <- data.frame(a=1:3,b=4:6,c=7:9)
colnames(df) <- c('열1','열2','열3')
rownames(df) <- c('행1','행2','행3')
타입변환에 대해 알아봅시다
- 데이터 타입’만’ 알고 싶을때 : class 함수
class(c(1,2))
#
class(matrix(c(1,2)))
#
class(list(1,2))
#
class(data.frame(1,2))
#
- 데이터 타입과 데이터 모양에 대한 추가정보까지 : str 함수
str(c(1,2))
#
str(matrix(c(1,2)))
#
str(list(c(1,2)))
#
#
str(data.frame(1,2))
#
#
#
- 데이터 타입을 맞는지 틀린지 TRUE/FALSE를 반환하는 함수
is.numeric(c(1,2,3))
#
is.numeric(c('a','b','c'))
#
is.matrix(matrix(c(1,2)))
#
자료 구조간의 변환 방법
lst <- list(1,2,3,4)
unlist(lst)
#
lst <- list(x=c(1,2),y=c(3,4))
data.frame(lst)
#
#
#
mat <- matrix(c(1,2,3,4), ncol=2)
data.frame(mat)
#
#
#
x <- c("m","f")
as.factor(x)
#
#
as.numeric(as.factor(x))
#
Quiz
- 남, 여를 1,2 로 바꿔보자
vec <- c('남','여','남','남','여')
#
as.numeric(factor(vec, levels=c('여','남')))
#
실습 과제
첨부한 파일을 다운 받고 R에서 불러오세요.
toyota_sample.csv
data_csv <- read.csv('toyota_sample.csv')
head(data_csv)
str(data_csv)
data_csv의 Price의 평균을 계산하여라
data_csv의 Age 의 표준편차을 계산하여라
data_csv의 3~5번째 row 선택하세요