HOME 로그인 회원등록 내글장바구니주문조회Admin
   


Study 2021 > 패널데이터 분석법 (R 프로그래밍 활용)
   
VII. 자주 사용하는 R 스크립트
   
1 ..................................................................................................... .....................................................................................................
2 생성 - 변수 생성하기 ▶ gender <- c (1, 1, 2, 1, 2, 1)
3 생성 - 데이터 프레임 (df) 생성하기 ▶ df = data.frame ( )
4 생성 - 변수를 dataset 에 추가 생성하기 #1 ▶ df $ gender <- c (1, 1, 2, 1, 2, 1)
5 생성 - 변수를 dataset 에 추가 생성하기 #2 ▶ df <- transform (df, gender = c (1, 1, 2, 1, 2, 1))
6 생성 - 이미 생성된 변수로 데이터프레임 만들기 ▶ df <- data.frame (gender, age, year, city)
7 생성 - 파생변수 1개 추가하기 > library(dplyr) ▶ df <- df %>% mutate ( new1 = var1 + var2 )
8 생성 - 파생변수 여러개 추가하기 > library(dplyr) ▶ df <- df %>% mutate ( new1 = var1 + var2, new2 = (var3 + var4)/2 )
9 ..................................................................................................... .....................................................................................................
10 입력 - R데이터 팝업창으로 입력/수정 fix() 함수 ▶ df = fix (df) ... * 수정 및 저장 가능
11 입력 - R데이터 팝업창으로 확인만 하기 edit() 함수 ▶ df = edit (df) ... * 수정/저장 안됨
12 입력 - csv 데이터 불러오기 ▶ df <- read.csv ("file_name.csv") ... * 경로 표시
13 입력 - 엑셀 데이터 불러오기 > library(readxl) ▶ df <- read_excel ("file_name.xlsx", col_names = T) ... * 경로 표시
14 ..................................................................................................... .....................................................................................................
15 저장 - CSV 데이터로 저장 (1) - 변수명에 quote (“ ”) 기호 표시하기 ▶ write.csv (df, file = "df.csv", quote=TRUE)
16 저장 - CSV 데이터로 저장 (2) - 변수명에 quote (“ ”) 기호 없애기 ▶ write.csv (df, file = "df.csv", quote=FALSE)
17 저장 - CSV 데이터로 저장 (3) - 결측치 NA 기호 제거후 저장하기 ▶ write.csv (df, file = "df.csv", row.names=T, na=" ")
18 저장 - CSV 데이터로 저장 (4) - 결측치 NA 기호 표시후 저장하기 ▶ write.csv (df, file = "df.csv", row.names=T, na="NA")
19 ..................................................................................................... .....................................................................................................
20 이상치 - 변수별 이상치 찾기 ▶ table (df $ var1)
21 이상치 - 특정 변수값 이상치에 NA 할당하기 ▶ df $ var1 <- ifelse ( df $ var1 = = 9, NA, df $ var1 ) ... * 크기 >, < 사용가능
22 ..................................................................................................... .....................................................................................................
23 추출 - 특정 변수 선택 추출하기 > library(dplyr) ▶ df %>% select (gender, var2, var4)
24 추출 - 특정 변수 제외 추출하기 > library(dplyr) ▶ df %>% select (-gender, -var2, -var4)
25 추출 - 변수의 특정값 추출하기 > library(dplyr) ▶ df %>% filter (var2 = = 3)
26 추출 - 변수의 특정값 제외 추출하기 > library(dplyr) ▶ df %>% filter (var2 != 3)
27 추출 - 변수의 특정값 (조건 하나라도 충족하는 행) 추출하기 > library(dplyr) ▶ df %>% filter (var2 = = 1 | var2 = = 3 | var2 = = 5)
28 추출 - 변수의 특정값 (조건 모두 충족하는 행) 추출하기 > library(dplyr) ▶ df %>% filter (var2 = = 2 & var2 = = 3 & var2 = = 4)
29 추출 - 행열 조합 추출하기 > library(dplyr) ▶ df %>% filter (var2 = = 2) %>% select (id, gender, var2)
30 ..................................................................................................... .....................................................................................................
31 병합 - 데이터 열 병합 ▶ df_sample_3 <- cbind (chapter_3_gender_1, chapter_3_without_gender)
32 병합 - 데이터 열 병합 (특정변수key기준) ① merge 함수 ▶ df_sample_4 <- merge (df_sample_3, chapter_3_gender_2_index, key = 'id')
33 병합 - 데이터 열 병합 (특정변수key기준) ② left_join 함수 > library(dplyr) ▶ df_sample_4 <- left_join (df_sample_3, chapter_3_gender_2_index, by = 'id')
34 병합 - 행 병합 ① rbind 함수 ▶ df_sample_3 <- rbind (df_sample_2, df_sample_3)
35 병합 - 행 병합 ② bind_rows 함수 > library(dplyr) ▶ bind_rows (df_sample_1, df_sample_2)
36 ..................................................................................................... .....................................................................................................
37 결측치 - 데이터 전체 모든 변수별 결측치 수 파악 > 패키지없음 ▶ colSums ( is.na (df_1)) ... * 대문자 S 주의
38 결측치 - 결측치 유무 확인 (데이터 프레임 내) > library(naniar) ▶ any_na (df_exam)
39 결측치 - 결측치 유무 확인 (변수 내) > library(naniar) ▶ any_na (df_exam$C3_Q166A2)
40 결측치 - 변수 내 결측치 분포상태 확인 > library(naniar) ▶ are_na (df_exam$C3_Q166A2)
41 결측치 - 변수 결측치 행 출력 > 패키지없음 ▶ is.na (df_sample_3$var1)
42 결측치 - 데이터 전체 결측치 수 파악 (방법1) > 패키지없음 ▶ table (is.na (df_1))
43 결측치 - 데이터 전체 결측치 수 파악 (방법2) > library(naniar) ▶ n_miss (df_exam)
44 결측치 - 특정 변수의 결측치 수 파악 (방법1) > 패키지없음 ▶ table (is.na (df_1$var1))
45 결측치 - 특정 변수의 결측치 수 파악 (방법2) > library(naniar) ▶ n_miss (df_exam$C1_Q138A4)
46 결측치 - 데이터 전체 결측치 비율 파악 > library(naniar) ▶ prop_miss (df_exam)
47 결측치 - 특정 변수의 결측치 비율 파악 > library(naniar) ▶ prop_miss (df_exam$C1_Q138A4)
48 결측치 - 결측치 행만 추출 > library(dplyr) ▶ df_sample_4 <- df_sample_3 %>% filter (is.na(var1))
49 결측치 - 결측치 없는 행만 추출 > library(dplyr) ▶ df_sample_5 <- df_sample_3 %>% filter (! is.na(var1))
50 결측치 - 여러 변수들에 걸쳐 결측치 없는 행만 추출 > library(dplyr) ▶ df_sample_4 <- df_sample_3 %>% filter (!is.na(id) & !is.na(var1) & !is.na(gender))
51 결측치 - 한방에 모든 변수의 결측치 제거 > 패키지없음 ▶ df_sample_4 <- na.omit (df_sample_3)
52 결측치 - 변수 결측치 평균값 대체 > library(dplyr) ▶ df_sample_nomiss <- df_sample %>% mutate ( var1=ifelse(is.na(var1), mean(var1, na.rm=T), var1))
53 결측치 - 변수 결측치 중위값 대체 > library(dplyr) ▶ df_sample_nomiss <- df_sample %>% mutate ( var1=ifelse(is.na(var1), median(var1, na.rm=T), var1))
54 결측치 - 한방에 모든 변수들 결측치 평균값 대체하기 > 패키지없음 ▶ df_sample_nomiss <- data.frame ( sapply(df_sample, function(x) ifelse(is.na(x), mean(x, na.rm = TRUE), x )))
55 결측치 - 한방에 모든 변수들 결측치 중위값 대체하기 > 패키지없음 ▶ df_sample_nomiss <- data.frame ( sapply(df_sample, function(x) ifelse(is.na(x), median(x, na.rm = TRUE), x )))
56 ..................................................................................................... .....................................................................................................
57 주요 기술통계 함수 ▶ (1) summary( ) - 요약 통계, (2) mean( ) - 평균값, (3) median( ) - 중간값, (4) sd( ) - 표준편차, (5) sum( ) - 합계, (6) max( ) - 최대값 출력, (7) min( ) - 최소값 출력, (8) rowMeans( ) - 행 평균값, (9) colMeans( ) - 열 평균값, (10) row
58 ..................................................................................................... .....................................................................................................
59 인구통계 - 두 변수 간 교차 인원수 구하기 (학교별 연령별) (1) ▶ table (df$성별, df$학력)
60 인구통계 - 두 변수 간 교차 인원수 구하기 (학교별 연령별) (2) > library(dplyr) ▶ df_data %>% group_by (var_school, var_age) %>% summarise(total = n())
61 인구통계 - 변수별 빈도 구하기 (예시, 나이) (1) ▶ table (df$나이)
62 인구통계 - 변수별 빈도 구하기 (예시, 나이) (2) > library(dplyr) ▶ df_data %>% group_by (var_age) %>% summarise(total = n())
63 인구통계 - 백분율 계산 - 변수별 (예시, 성별) ▶ prop.table ( table ( df_data $ sex ) ) * 100
64 인구통계 - 백분율 계산 - 교차변수 간 (성별 vs. 학력) ▶ prop.table ( table ( df_data$sex , df_data$school ) ) * 100
65 인구통계 - 백분율 계산 - 소수점 3째 자리 반올림 (round 함수) ▶ round (prop.table ( table ( df_data$sex , df_data$school ) ) * 100, 3)
66 ..................................................................................................... .....................................................................................................
67 행번호 - 행(case) 번호 열 추가후 CSV 파일로 저장 ▶ write.csv ( df_sample_1, file = "df_sample_1.csv", row.names = T )
68 행번호 - 행(case) 번호 열 제거후 CSV 파일로 저장 ▶ write.csv ( df_sample_1, file = "df_sample_1.csv", row.names = F )
69 행번호 - 행(case) 번호 변수 생성후 결합하기 > Case_id <- c(1:행수) ▶ Case_id <- c(1:778) / df_sample_2 <- cbind (Case_id, df_sample_1)
70 행번호 - 행(case) 번호가 있는지 TRUE/FALSE 판별하기 > library(tibble) ▶ has_rownames(df_1) # FALSE = 행 이름 없음
71 행번호 - 행(case) 번호를 특정 변수(열)에 할당하기 > library(tibble) ▶ df_2 <- column_to_rownames (df_1, var = 'id')
72 행번호 - 행(case) 번호를 새 변수로 추가하기 (방법 1) > library(tibble) ▶ df_1 <- rownames_to_column (df_1, var = "No") # 행 번호에 "quote" 붙음
73 행번호 - 행(case) 번호를 새 변수로 추가하기 (방법 2) > library(ggplot2) ▶ df_2 <- rowid_to_column (df_1) # rowid열 생성되고 행 번호에 "quote" 없음
74 행번호 - 행(case) 번호 열 제거하기 > 패키지없음 ▶ (방법 1) df_2$rowid <- NULL , (방법 2) df_2[, 'rowid'] <- NULL
75 ..................................................................................................... .....................................................................................................
76 변경 - 변수명 일괄 변경 - 접두어 (T1_ ) 붙이기 > 패키지없음 ▶ names (df_group1) <- paste0 ( "T1_", names ( df_group1 ) )
77 변경 - 변수명 일괄 변경 - 접미어 (_T1) 붙이기 > 패키지없음 ▶ names (df_group2) <- paste0 ( names (df_group2), "_T1" )
78 변경 - 변수명 변경 (방법1) > dplyr 패키지 ▶ df_2 <- rename (df_1, Var1=A, Var2=B, Var3=C) # 기존 변수 A,B,C 가 Var1, Var2, Var3로 변경됨
79 변경 - 변수명 변경 (방법2) > 패키지없음 ▶ names (df_1) <- c ("Var1", "Var2", "Var3") # 기존 변수명이 A,B,C 라면 Var1, Var2, Var3로 순서대로 변경됨
80 변경 - 변수명 변경 (방법3) > reshape 패키지 ▶ df_2 <- reshape ( df_data, c ( Var1 = "sex", Var2 = "age") )
81 변경 - 변수 속성 (integer)로 변경 > 패키지없음 ▶ df $ var1 <- as.integer (df $ var1) # 정수이므로 소수점 이하는 절사됨
82 변경 - 변수 속성 (factor)로 변경 > 패키지없음 ▶ df $ var1 <- as.factor (df $ var1) # 용례: 로지스틱 회귀에서 변수 범주화
83 변경 - 변수 속성 (numeric)로 변경 > 패키지없음 ▶ df $ var1 <- as.numeric (df $ var1)
84 변경 - 변수 속성 (character)로 변경 > 패키지없음 ▶ df $ var1 <- as.character (df $ var1)
85 ..................................................................................................... .....................................................................................................
86 탐색 - 구조파악 - 전체 차원 확인 ▶ dim (df_1) # '행 x 열' 수 표시
87 탐색 - 구조파악 - 전체 요약 탐색 ▶ str (df_1) # 데이터 구조, 변수 개수, 변수 명, 관찰치 개수, 관찰치의 미리보기
88 탐색 - 구조파악 - 전체 변수의 개수 파악 ▶ length (df_1)
89 탐색 - 구조파악 - 특정 변수의 행(case) 수 파악 ▶ length (df_1$var1)
90 탐색 - 속성파악 - 데이터 자체 종류(속성) 파악 ▶ class (df_1) # "data.frame" = 데이터프레임 의미
91 탐색 - 속성파악 - 특정 변수의 속성 파악 ▶ class (df_1$var1)
92 탐색 - 속성파악 - 전체 변수별 속성 파악 (방법1) ▶ sapply (df_1, class)
93 탐색 - 속성파악 - 전체 변수별 속성 파악 (방법2) ▶ apply (df_1, MARGIN = 2, FUN = "class") # MARGIN = 2 수정안됨
94 탐색 - 속성파악 - 전체 변수별 속성 요약 (min, Median, Mean, 3분위수, max) ▶ summary (df_1)
95 탐색 - 속성파악 - 특정 변수의 속성 요약 (min, Median, Mean, 3분위수, max) ▶ summary (df_1$var1)
96 탐색 - 미리보기 - 상위 6개 행(case) 미리보기 ▶ head (df_1)
97 탐색 - 미리보기 - 하위 6개 행(case) 미리보기 ▶ tail (df_1)
98 ..................................................................................................... .....................................................................................................
99 Tip - R 설치 ▶ https://cran.r-project.org/
100 Tip - RStudio 설치 ▶ https://www.rstudio.com/products/rstudio/download/
101 Tip - RStudio 설정 (자동 줄 바꿈) ▶ Tools -> Global Options -> Code -> [Soft-wrap R source files] 선택
102 Tip - RStudio 설정 (한글 주석 깨짐 방지 설정하기 - 인코딩) ▶ Tools -> Global Options -> Code -> Saving탭 -> Default text encoding -> [UTF-8] 선택
103 Tip - RStudio 설정 (전체 라인 실행하기) ▶ Tools -> Global Options -> Code -> Editing탭 -> Execution영역 -> [Ctrl+Enter] executes 에서 Multi-line R statement 선택
104 Tip - RStudio 설정 (창 레이아웃 변경하기) ▶ Tools -> Global Options -> Pane Layout 에서 필요한 구성 선택
105 Tip - RStudio 설정 (테마 / 글꼴 / 폰트 사이즈 변경하기) ▶ Tools -> Global Options -> Appearance 에서 원하는 수정
106 Tip - RStudio 단축키 (전체보기) ▶ Alt+Shift+K 또는 Help -> Keyboard Shortcuts Help
107 Tip - RStudio 단축키 (자주 연산자 및 수정) ▶ 파이프연산자 %>% (Ctrl + Shift + M) 기타 수정은 Tools -> Modify Keyboard Shortcuts 에서
108 Tip - RStudio 주석 처리 방법 ▶ 작성한 코멘트 전체를 드래그 선택후 단축키 Ctrl + Shift + c 누름
109 Tip - RStudio 파이프연산자 (%>%) 작동 패키지 ▶ library(dplyr) 설치
110 ..................................................................................................... .....................................................................................................
111 에러 - R 코딩에서 하이픈(-) 사용은 오류남 ▶ underscore(_) 또는 띄어쓰기(spacing) 해야함
112 ..................................................................................................... .....................................................................................................
1