(1) dplyr 패키지 설치 및 로드하기
install.packages("dplyr") library(dplyr)
filter(데이터, 조건문)
select(데이터, 변수명1, 변수명2, ....)
arrange(데이터, 변수명1, 변수명2, ...)
: 오름차순 정렬
arrange(데이터, 변수명1, 변수명2, ..., desc(변수명)
: 내림차순 정렬
mutate(데이터, 추가할 변수 이름 = 조건1, ...)
distinct(데이터, 변수명)
summarise(데이터, 요약할 변수명 = 기술통계 함수)
: summarize()로 작성해도 됨 !
group_by(데이터, 변수명)
sample_n(데이터, 샘플 추출할 개수)
: 전체 데이터에서 샘플 데이터를 개수 기준으로 추출
sample_frac(데이터, 샘플 추출할 비율)
: 전체 데이터에서 샘플 데이터를 비율 기준으로 추출
데이터 세트 %>% 조건 또는 계산 %>% 데이터 세트
파이프 연산자 : 이름 그대로 파이프, 연결하여 연산하는 연산자
library(dplyr)
library(readx1) exdata1 <- read_Excel("C:/경로/Sample1.xlsx") exdata1
select() 함수 : 데이터 세트에 있는 변수 중 필요한 변수만 추출 가능
exdata1 %>% select(ID)
exdata1 %>% select(ID, AREA, Y21_CNT)
exdata1 %>% select(-AREA)
exdata1 %>% select(-AREA, -Y21_CNT)
AREA, Y21_CNT 변수 2개 제외하고 추출
exdata1 %>% filter(AREA == '서울')
exdata1 %>% filter(AREA == '서울' & Y21_CNT >= 10)
조건 2가지 일 경우
arrange() 함수 : 변수 크기 순으로 정렬하여 새로운 데이터 만들거나 조회
exdata1 %>% arrange(AGE)
exdata1 %>% arrange(desc(Y21_AMT))
exdata1 %>% arrange(AGE, desc(Y21_AMT))
쉼표(,)로 정렬
exdata1 %>% summarise(TOT_Y21_AMT = sum(Y21_AMT))
exdata1 %>% group_by(AREA) %>% summarize(SUM_Y21_AMT = sum(Y21_AMT))
bind_rows(테이블명, 테이블명)
library(readxl) m_history <- read_excel("C:/경로/Sample2_m_history.xlsx") f_history <- read_excel("C:/경로/Sample3_f_history.xlsx") View(m_history) View(f_history)
exdata_bindjoin <- bind_rows(m_history, f_history) View(exdata_bindjoin)
left_join(테이블1, 테이블2, by = "변수명")
inner_join(테이블1, 테이블2, by = "변수명")
full_join(테이블1, 테이블2, by = "변수명")
library(readxl) jeju_y21_history <- read_excel("C:/경로/Sample4_m_history.xlsx") jeju_y20_history <- read_excel("C:/경로/Sample5_f_history.xlsx") View(jeju_y21_history) View(jeju_y20_history)
bind_col <- left_join(jeju_y21_history, jeju_y_20_history, by = "ID) View(bind_col)
bind_col_inner <- inner_join(jeju_y21_history, jeju_y_20_history, by = "ID) View(bind_col_inner)
bind_col_full <- full_join(jeju_y21_history, jeju_y_20_history, by = "ID) View(bind_col_full)
넓은 모양 데이터는 행보다 열이 많아 가로로 긴 모양의 행렬
이러한 행렬의 열을 행으로 바꾸어 세로로 길게 바꿀 떄 melt() 함수 사용
na.rm = TRUE
입력melt(데이터, id.var = "기준 열", measure.vars = "변환 열"
install.packages("reshape2")
head(airquality)
1행에서 6행까지 출력 <-> tail() (반대)
names(airquality) <- tolower(names(airquality)) head(airquality)
names() : 변수명 구하기, tolower() : 소문자 치환
library(reshape2) melt_test <- melt(airquality) head(melt_test)
melt_test2 <- melt(airqualuty, id_wars = c("month", "wind"), measure.wars = "ozone") head(melt_test2)
month와 wind 변수를기준으로 데이터가 변형되어 오류 메시지 없이 ozone 값 출력
세로로 길게 늘어진 데이터를 가로로 긴 형태의 데이터로 변형해야 할 때가 있음
cast() 함수 : 행을 열로 바꾸는 함수
melt() 함수 사용 시보다 다소 복잡하므로 꼼꼼하게 살펴보기 !
dcast(데이터, 기준 열 ~ 반환 열)
names(airquality) <- tolower(names(airquality)) head(airquality)
names() : 변수명 구하기, tolower() : 소문자 치환
library(reshape2) aq_melt <- melt(airquality, id.vars = c("month", "day"), na.rm = TRUE) head(aq_melt)
aq_dcast <- dcast(aq_melt, month + day ~ variable) head(aq_dcast)
변수 두개 식별자로 지정 할 때는 +기호 사용
생성한 변수 View() 함수 이용해서 확인해보기 !
acast(데이터, 기준 열 ~ 반환 열 ~ 분리 기준 열)
acast(aq_melt, day ~ month ~ variable)
1일부터 31일까지, 5월부터 9월까지, 오존, 태양복사, 바람, 온도의 측정 값 출력
acast() 함수 이용하여 데이터 세트를 배열로 정리하면, 항목별로 한 눈에 비교하기 쉬움
cast() 함수 : 데이터 요약을 할 수 있는 것이 특징 !
acast(aq_melt, month ~ variable, mean)
acast(aq_melt, month ~ variable, sum)
is.na(변수명)
table(is.na(변수명))
데이터에 결측치가 있으면 연산을 해도 결과가 NA
--> 연산에 문제 없도록 결측치를 제외하고 연산해야함
결측치 제외하는 방법 : na.rm = T 옵션
sum(is.na(변수명))
colSums(is.na(변수명))
data(airquality) is.na(airquality)
실행 결과에 TRUE 값 ==> 데이터 세트에 결측치 존재 !
sum(is.na(airquality))
colSums(is.na(airquality))
na.omit(변수명)
: 결측치가 있는 행 전체를 데이터 셋에서 제거 후 데이터 출력
data(airquality) na.omit(airquality)
변수명[is.na(변수명)] <- 대체할 값
data(airquality) airquality[is.na(airquality)] <- 0 colSums(is.na(airquality))
boxplot(변수명)$stats
ifelse(조건문, 조건이 참일 때 실행, 조건이 거짓일 때 실행)
mtcars 데이터 셋 wt 칼럼에서 5.2500을 초과하는 값(>5.25)를 찾아요.
exdata1 테이블에서 AGE가 30세 이하이면서 Y20_CNT가 10건 이상인 데이터를 exdata2 테이블로 생성하는 코드를 작성하여 출력해보세요. (파이프 연산자 사용)
exdata2 <- exdata1 %>% filter(AGE >= 30 & Y20_CNT >= 10)
exdata2
1학년 1반, 2반, 3반 학생 5명씩의 중간고사와 기말고사 성적이 기록된 엑셀 파일을가져온 후 다음 실행 결과와 같이 반별 수학 점수와 영어 점수를 각각 출력해보세요.
library(readxl)
middle_mid_exam <- read_excel("C:/Rstudy/middle_mid_Exam.xlsx")
View(middle_mid_exam)
library(dplyr)
library(reshape2)
MATHEMATICS <- middle_mid_Exam %>% select(CLASS, ID, MATHEMATICS)
MATHEMATICS <- dcast(MATHEMATICS, ID ~ CLASS)
View(MATHEMATICS)
ENGLISH <- middle_mid_exam %>% select(CLASS, ID, ENGLISH)
ENGLISH <- dcast(ENGLISH, ID ~ CLASS)
View(ENGLISH)