Data Frame(데이터 프레임) : 2차원

데이터 프레임은 분석에서 가장 많이 볼 수 있는 자료형입니다.

행렬과 달리 다양한 자료형을 동시에 사용할 수 있기 때문에 분석에서 많이 사용됩니다.

 

# data.frame() 함수 : 데이터 프레임을 만듭니다.

df.a <- c(1,2,3,4,1,2)

df.b <- c('a','b','c','d','a','b')

df.c <- c(1,'a','b','a',1,'c')

df.d <- data.frame(df.a,df.b,df.c)

 

* 데이터 프레임의 요소 접근

데이터 프레임의 특정 열의 값을 선택하는 방법은 크게 2가지가 있습니다.

1. 데이터 프레임의 이름 [열번호]

데이터 프레임의 형태로 값을 선택합니다

df_field1 <- df.d[1] #1번열
df_field2 <- df.d[1:2] #1~2번열

df_field3 <- df.d[c(1,3)] #1,3번 열

 

2. 데이터 프레임 $ 열이름

숫자는 벡터형태로 값을 저장하고, 문자는 펙터형태로 저장합니다.

df_field4 <- df.d$df.a

df_field5 <- df.d$df.b

df_field6 <- df.d$df.c

 

* 외부 데이터 읽어오는 방법(csv)

read.csv() : csv 파일을 읽어 데이터프레임으로 저장합니다.

-절대경로 : 파일의 위치를 물리적으로 저장

csv_exam <- read.csv('C:/sjwannabe/R/csv_exam.csv')

-상대경로 : 파일의 위치를 작업파일을 기준으로 저장(working directroy)

csv_exam <- read.csv('csv_exam.csv)

 

csv_exam[1,] #1행만 선택합니다.
csv_exam[,1] #1열만 선택합니다

class(csv_exam[,1]) #벡터형식 데이터 

csv_exam[1] # 1열만 선택합니다* 그냥 숫자만 적었을때는 열을 출력 
class(csv_exam[1]) # 데이터프레임 형식 데이터

csv_exam[1:2,] # 1행부터 2행까지 선택합니다.
class(csv_exam[1:2,]) #데이터프레임 형식 데이터
csv_exam[,'math'] # math열을 선택합니다.
class(csv_exam[,'math']) # 벡터 형식 데이터
csv_exam$math # math열을 선택합니다.
class(csv_exam$math) # 벡터 형식 데이터
csv_exam['math'] # math 열을 선택합니다.
class(csv_exam['math']) # 데이터프레임 형식 데이터
csv_exam[20,5] # 20행 5열을 선택합니다.
class(csv_exam[20,5]) # 벡터 형식 데이터

 

* 조건에 만족하는 데이터프레임의 데이터를 얻어오는 방법

데이터프레임의 class 열에 저장된 값이 1인 행만 선택합니다.
csv_exam[csv_exam$class == 1,]
데이터프레임의 math 열에 저장된 데이터가 80이상인 행만 선택합니다
csv_exam[csv_exam$math >= 80,]
데이터프레임의 class열에 저장된 데이터가 1이고, english열에 데이터가 90이상인 행만 선택합니다.
csv_exam[csv_exam$class ==1 & csv_exam$english >=90,]
데이터프레임의 math열에 저장된 데이터가 50이하이거나, english 열에 데이터가 50이하인 행만 선택합니다.
csv_exam[csv_exam$math <= 50 | csv_exam$english <= 50,]

 

* 읽어올 csv파일의 첫번째 줄이 열 이름이 아닐 경우 header=f 옵션을 사용하여 읽어올 수 있습니다.
* 첫번째 줄이 열 이름이 아닐 경우 데이터 손실이 일어날 수 있습니다.

csv_exam_noheader <- read.csv('csv_exam_noheader.csv')

* 첫번째 줄이 열 이름이 아닐 경우 header=f 옵션을 사용하여 읽어옵니다

csv_exam_noheader <- read.csv('csv_exam_noheader.csv', header = F)

* 행 이름을 기본 상태로 되돌립니다.

colnames(csv_exam_noheader) <- NULL

* 행 이름을 지정해줍니다.

colnames(csv_exam_noheader) <- c('id','class','math','enghlish','science')

 

외부 패키지를 사용하는 방법

install.packages('패키지이름') -> 패키지 이름에 꼭! 따옴표를 사용해야합니다.

install.packages('dplyr')

 

* 설치된 패키지를 사용하는 방법

패키지를 설치하고 포함된 기능을 사용하려면 library() 함수를 실행해서 설치된 패키지를 메모리에 로드 시켜야합니다.

library(dplyr) * 메모리에 로드 시킬때에는 따옴표를 사용하지 않습니다.

 

# 데이터프레임의 열 이름을 변경하기 위한 rename() 함수를 사용합니다.

rename() 함수를 사용하려면 dplyr 패키지를 설치하고 메모리에 로드한 후 사용할 수 있습니다.

rename(데이터 프레임 이름, 새이름=기존이름, 새이름=기존이름, ..)

csv_exam_copy <- rename(csv_exam_copy, V1=id, V2=class, V3=math, V4=english, V5=science)
csv_exam_copy

 

# excel 파일을 읽어오려면 readxl 패키지를 설치하고 로드한 후 사용합니다.

install.packages('readxl')
library(readxl)

 

excel_exam <- read_excel_exam.xlsx')

 

# tibble
데이터 프레임을 현대적으로 재구성한 타입으로 simple data frames라고 부릅니다.

tibble은 data.fram을 만들 때 사용하고, 데이터를 간략하게 표현하고 대용량 데이터를 다룰 수 있습니다.

tibble은 이력 유형이 변경되지 않아 character 변수를 이용할 때 보다 데이터 변경이 없는 자료에 자주 사용됩니다.

 

# 읽어올 excel 파일의 첫번째 줄이 열 이름이 아닌 경우 col_names=F 옵션으로 지정하여 읽어 옵니다

excel_exam_noheader <- read_excel(excel_exam_noheader.xlsx', col_names = F)

excel_exam_noheader_copy <- excel_exam_noheader

excel_exam_noheader_copy <- rename(excel_exam_noheader_copy, id='...1', class='...2',math='...3',english='...4',science='...5')

 

# 읽어올 excel 파일에 sheet가 여러개 있을 경우 특정 시트의 데이터를 읽어오려면 

sheet=n(n은 읽어올 sheet의 위치), 또는 sheet='시트이름' 옵션을 지정해서 읽어옵니다.

excel_exam <- read_excel('excel_exam.xlsx', sheet = 2)

excel_exam <- read_excel('excel_exam.xlsx', sheet = 'sheet2')

 

* tibble은 사용하는 패키지에 따라 사용할 수 없는 함수들이 많으므로 

데이터프레임으로 변환시키고 사용하는 것이 일반적입니다.

# as.data.frame() 함수 : 자료형을 데이터 프레임 형태로 변환합니다

excel_exam <- as.data.frame(excel_exam)

 

* csv파일로 데이터를 저장하려면 데이터프레임 형태로 저장해야합니다.

write.csv(데이터프레임, file= '파일명')

write.csv(excel_exam), file = 'df_excel_exam.csv')

행 번호를 csv파일에 저장하지 않으려면 row.names=F 옵션을 사용합니다.

write.csv(excel_exam), file = 'df_excel_exam.csv', row.names = F)

+ Recent posts