Chapter 04 데이터 다루기
04-1 데이터 수집하기 |
- 데이터 수집
- 데이터 수집 : 분석할 데이터를 준비하는 과정
데이터 원천 | 설명 |
직접 입력 | 벡터나 데이터 프레임을 R에 함수로 입력하는 방법 |
외부 데이터 가져오기 | *.txt, *.csv, *.xlsx |
- 직접 입력
# 데이터 입력 : 벡터 만들기, 데이터 프레임 만들기와 동일 변수명 <- c(값) # 데이터 조회 View(데이터 이름) |
## 예시 ID <- c(1,2,3,4,5) SEX <- c("F", "M", "F", "M", "F") DATA <- data.frame(id=ID, sex=SEX) View(DATA) |
- 외부 데이터 가져오기 : TXT 파일
read.table(“데이터 이름”, header = FALSE, skip = 0, nrows = -1, sep = “”, ...) |
- header : 원시 데이터의 1행이 변수명인지 아닌지 판단 - skip : 특정 행까지 제외하고 데이터를 가져옴 - nrows : 특정 행까지 데이터를 가져옴 - sep : 데이터의 구분 문자를 지정 -- 옵션은 사용하지 않으면 구문에서 생략할 수 있다. (생략 시 기본값으로 선택됨) |
# TXT 파일 가져오기 ex_data.txt <- read.table("C:/~/ex_data_txt.txt", header = TRUE, encoding = "EUC-KR", fileEncoding = "UTF-8" ) # 가져온 TXT 조회하기 View(ex_data.txt) # 옵션1. header (열 이름 지정하기) : 기본옵션 header = FALSE varname <- c("ID", "SEX", "AGE", "AREA") ex_data.txt2 <- read.table("C:/~/data_ex_col.txt", header = FALSE, col.names = varname, encoding="EUC-KR", fileEncoding="UTF-8") # 가져온 TXT 조회하기 View(ex_data.txt2) # 옵션2. skip (행 건너뛰기) ex_data.txt3 <- read.table("C:/~/ex_data_txt.txt", header = TRUE, skip = 2, encoding = "EUC-KR", fileEncoding = "UTF-8" ) # 가져온 TXT 조회하기 View(ex_data.txt3) # 옵션3. nrows (행 자르기) ex_data.txt4 <- read.table("C:/~/ex_data_txt.txt", header = TRUE, nrows = 7, encoding = "EUC-KR", fileEncoding = "UTF-8" ) # 가져온 TXT 조회하기 View(ex_data.txt4) ex_data.txt5 <- read.table("C:/~/data_ex1.txt", header = TRUE, sep=",", encoding = "EUC-KR", fileEncoding = "UTF-8" ) # 가져온 TXT 조회하기 View(ex_data.txt5) |
- 외부 데이터 가져오기 : CSV 파일
read.csv(“원시데이터”) |
- read.table() 함수와 사용법이 비슷함 -- header = TRUE 가 기본값인 것이 차이점 |
# CSV 불러오기 ex_data.csv <- read.csv("C:/~/data_ex.csv") # 가져온 CSV 조회하기 View(ex_data.csv) |
- 외부 데이터 가져오기 : EXCEL 파일
read_excel(“원시 데이터”) |
- readxl 패키지 설치 필요 |
# readxl 패키지 설치 및 로드 install.packages('readxl') library("readxl") # 엑셀 파일 가져오기 ex_data.xlsx <- read_excel("C:/~/data_ex.xlsx", sheet = 1) ## sheet 옵션은 선택 View(ex_data.xlsx) |
- 외부 데이터 가져오기 : XML, JSON 파일
* XML : Extensible markup language -> HTML과 비슷. 데이터를 보여주는 것이 아니라 저장하고 전달하는 목적의 파일 형식 -> HTML과 달리 태그<>가 미리 정의되어 있지 않고 사용자가 직접 정의 * JSON : Javascript object notation -> XML과 마찬가지로 데이터를 전달하는 목적으로 만들어진 파일 형식 -> 서버-클라이언트 통신 간 데이터를 받아 객체나 변수에 할당해서 사용할 때 따 많이 사용 -> XML 파일보다 구문이 짧고 속도가 빨라 실무에서 흔히 사용 |
xmlToDataFrame(“원시 데이터”) |
- XML 패키지 설치 필요 |
# XML 패키지 설치 및 로드 install.packages("XML") library(XML) # XML 파일 가져오기 ex_data.xml <- xmlToDataFrame("C:/~/data_ex.xml") View(ex_data.xml) |
fromJSON(“원시 데이터”) |
- JSON 파일은 데이터 안에 다시 데이터가 정의된 중첩 데이터 구조 - 데이터 속성과 값이 쌍으로 이루어진 것이 특징 (ex. 속성(주소) - 값(“서울”) ) - jsonlite 패키지 설치 필요 - fromJSON() 함수는 JSON 파일을 데이터 프레임으로 가져오지 않는다 >> View() 가 아니라 str() 로 구성 확인 |
# jsonlite 패키지 설치 및 로드 install.packages("jsonlite") library(jsonlite) # JSON파일 가져오기 ex_data.json <- fromJSON("C:/~/data_ex.json") str(ex_data.json) |
04-2 데이터 관측하기 |
- 데이터 전체 확인하기
data(“원시 데이터”) |
- 데이터 요약 확인하기
str(“변수명”) ncol(“변수명”) ls(“변수명”) nrow(“변수명”) dim(“변수명”) head(변수명, n = 수량) tail(변수명, n = 수량) |
데이터의 형식 유형 확인 데이터 프레임의 열(column) 개수 확인 데이터 세트에 있는 열의 이름 확인 데이터 프레임의 관측치 = 행(row) 개수 확인 데이터 프레임의 열 및 관측치 개수 확인 데이터의 앞 n개 값 확인 (기본 6개) 데이터의 뒤 n개 값 확인 (기본 6개) |
- 기술통계량 확인하기
mean(변수명) | 평균 |
median(변수명) | 중앙값 |
min(변수명), max(변수명) | 최솟값, 최댓값 |
range(변수명) | 범위 (최솟값과 최댓값을 출력) |
quantile(변수명, probs = 0~1) | 하위 0~1 (비율) 만큼의 분위수 1사분위수 (0.25) 2사분위수 (0.50) 3사분위수 (0.75) 하위 80% 지점의 값 (0.80) |
var(변수명) | 분산 |
sd(변수명) | 표준편차 |
kurtosi(변수명) |
첨도 (정규분포 대비 뾰족한 정도) |
skew(변수명) | 왜도 (좌우대칭 대비 오른쪽 꼬리+ 또는 왼쪽 꼬리-가 긴 정도 |
첨도, 왜도 함수를 사용하기 위해 설치해야 하는 패키지 : psych |
- 빈도분석 (도수분포)
freq(변수명) |
빈도분석 함수를 사용하기 위해 설치해야 하는 패키지 : descr plot 출력이 기본 옵션 |
04-3 데이터 탐색하기 |
- 그래프 그리기
막대 그래프 | freq(변수명, plot = T, main = ‘그래프 제목’) descr 패키지 설치 필요 |
|||
000 <- table(변수명) barplot(000, ylim = c(y축 범위), main = “그래프 제목”, xlab = “x축 제목”, ylab = “y축 제목”, names = c(“컬럼 제목”, ...), col = c(“색상”, ...) ...) 별도 패키지 설치 필요없음 빈도분석이 선행되어야 함 : table() 함수 |
||||
상자 그림 | baxplot(000, ylim = c(y축 범위), main = “그래프 제목”, xlab = “x축 제목”, ylab = “y축 제목”, names = c(“컬럼 제목”, ...), col = c(“색상”, ...) ...) |
막대그래프 vs 히스토그램 막대그래프는 이산형 데이터(성별, 지역 등)의 빈도수를 표시하여 비를 보는 것 히스토그램은 연속형 데이터(키, 성적 등)를 일정한 계급구간으로 나누어 분포를 보는 것 |
||
히스토그램 | hist(000, ylim = c(y축 범위), main = “그래프 제목”, xlab = “x축 제목”, ylab = “y축 제목”, names = c(“컬럼 제목”, ...), col = c(“색상”, ...) ...) |
|||
파이차트 (원 그래프) |
000 <- table(변수명) pie(000, ylim = c(y축 범위), main = “그래프 제목”, xlab = “x축 제목”, ylab = “y축 제목”, names = c(“컬럼 제목”, ...), col = c(“색상”, ...) ...) 빈도분석이 선행되어야 함 : table() 함수 |
|||
줄기 잎 그림 | stem(변수명, scale = ~) scale 파라미터는 줄기의 수 (예시 보기) 기본 옵션은 scale = 1 |
|||
# 예시 1 x <- c(10, 20, 30, 40, 50) > stem(x) 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 > stem(x, scale=2) 1 | 0 1 | 2 | 0 2 | 3 | 0 3 | 4 | 0 4 | 5 | 0 >stem(x, scale= 10) 10 | 0 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 0 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 0 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 0 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 0 |
||||
# 예시 2 y <- c(1,2,3,4,7,8,9,11,35) > stem(y) 0 | 1234789 1 | 1 2 | 3 | 5 > stem(y,scale=2) 0 | 1234 0 | 789 1 | 1 1 | 2 | 2 | 3 | 3 | 5 > stem(y,scale=0.5) 0 | 12347891 2 | 5 |
# 예시 3 z <- c(1,2,3,4,7,8,8,5,9,6,9) > stem(z) 0 | 0 2 | 00 4 | 00 6 | 00 8 | 0000 > stem(z, scale=2) > stem(z, scale=3) #결과가 같음 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 00 9 | 00 >stem(z, scale=0.5) >stem(z, scale=0.8) #결과가 같음 0 | 1234 0 | 5678899 |
|||
산점도 | plot(x, y) -- plot(변수명) 으로 입력시 전체 산점도가 출력 |
> plot(iris$Sepal.Length, iris$Sepal.Width) > plot(iris) |
||
pairs(변수명) -- 내장함수 |
> pairs(iris) | |||
pairs.panel(변수명) -- psych 패키지 -- 상관계수까지 출력 |
> pairs.panels(iris) |
혼공 미션 |
- 기본 미션
- 선택 미션 : p. 191 상자 그림 그래프의 각 요약값 정리하기
이상치(outlier) | 데이터가 많이 분포해있는 범위에서 심하게 벗어난 극단의 데이터 |
최댓값 (maximum) | 모든 데이터 중 가장 큰 값 |
제3사분위수 (third quartile) | 데이터의 75%가 어떤 값보다 작거나 같을 때 이 값 최댓값과 중앙값을 이등분하는 값 |
중앙값(제2사분위수) (Median) | 데이터를 크기순으로 정렬했을 때 중앙에 위치하는 값 |
제1사분위수 (first quartile) | 데이터의 25%가 어떤 값보다 작거나 같을 때 이 값 최솟값과 중앙값을 이등분하는 값 |
최솟값 (minimum) | 모든 데이터 중 가장 작은 값 |
정리본 PDF |
'프로그래밍 > R 공부' 카테고리의 다른 글
[혼공학습단 10기] 혼자 공부하는 R 데이터 분석 Chapter 05 (2) | 2023.08.03 |
---|---|
(코드 오류와 해결 기록) dcast() : Aggregation function missing: defaulting to length (0) | 2023.07.19 |
[혼공 학습단 10기] 혼자 공부하는 R 데이터분석 Chapter 03 (0) | 2023.07.11 |
[혼공학습단 10기] 혼자 공부하는 R 데이터분석 Chapter 02 (0) | 2023.07.05 |
[혼공학습단 10기] 혼자 공부하는 R 데이터분석 Chapter 01 (0) | 2023.07.03 |