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)
'프로그래밍 공부 > R' 카테고리의 다른 글
R 공부 Day 5 데이터 전처리, %>% 파이프 연산자, 데이터 정제 (0) | 2020.05.28 |
---|---|
R 공부 Day 4 java JDK 설치, 파생변수 만들기 (0) | 2020.05.28 |
R 공부 Day 2 변수의 종류와, 기본 함수 (0) | 2020.05.26 |