59doit
[ R ] 연습문제 (6) 6-> ch7 본문
1. 본문에서 생성된 dataset2의 직급(position)컬럼을 대상으로 1급 > 5급, 5급 > 1급 형식으로 역코딩하여 position2컬럼에 추가하시오.
dataset2$position2 <- 6-dataset2$position dataset2$position2[dataset2$position2==1] <- '1급' dataset2$position2[dataset2$position2==2] <- '2급' dataset2$position2[dataset2$position2==3] <- '3급' dataset2$position2[dataset2$position2==4] <- '4급' dataset2$position2[dataset2$position2==5] <- '5급' dataset2$position;dataset2$position2 head(dataset2) # resident gender job age position price survey resident2 job2 age2 position2 # 1 1 1 1 26 4 5.1 5 1.서울특별시 공무원 청년층 2급 # 2 2 1 2 54 1 4.2 4 2.인천광역시 회사원 중년층 5급 # 3 NA 1 2 41 2 4.7 2 <NA> 회사원 중년층 4급 # 4 4 2 NA 45 2 3.5 4 4.대구광역시 <NA> 중년층 4급 # 5 5 1 3 62 1 5.0 5 5.시구군 개인사업 장년층 5급 # 6 3 1 2 57 NA 5.4 4 3.대전광역시 회사원 장년층 <NA> |
2. 본문에서 생성된 dataset2의 resident 컬럼을 대상으로 NA값을 제거한 후 resident2변수에 저장하시오.
resident2 <- na.omit(dataset2$resident) resident2 # [1] 1 2 4 5 3 2 2 5 3 1 2 1 3 2 1 1 1 1 2 1 2 1 2 1 2 1 2 5 1 2 4 2 3 5 1 1 4 # [38] 1 2 1 1 1 1 2 1 1 3 1 2 2 1 1 5 1 3 1 3 1 1 1 1 5 1 2 1 5 2 5 1 1 1 4 5 1 # [75] 5 1 3 1 1 3 4 3 1 1 5 1 5 5 2 1 2 2 1 2 2 1 3 1 2 1 2 1 2 1 1 2 1 2 5 1 2 # [112] 4 2 5 3 5 1 1 4 1 2 1 1 1 1 2 1 1 3 1 2 1 1 5 1 3 1 3 1 1 1 1 1 5 1 2 1 5 # [149] 2 5 1 2 1 1 4 1 5 2 1 5 1 3 1 1 3 4 3 1 1 5 1 1 1 5 1 5 1 1 5 5 5 1 2 2 4 # [186] 2 5 1 2 3 4 1 3 1 1 5 3 1 5 1 5 5 1 2 2 4 2 2 1 1 5 1 2 1 2 1 3 4 3 1 # attr(,"na.action") # [1] 3 8 45 53 62 66 93 132 139 149 153 183 188 197 219 # attr(,"class") # [1] "omit" |
3. 본문에서 생성된 dataset2의 gender컬럼을 대상으로 1 -> “남자”, 2-> “여자”로 코딩 변경하여 gender2 컬럼에 추가하고, 파이차트로 결과를 확인하시오.
dataset2$gender2[dataset2$gender==1] <- '남자' dataset2$gender2[dataset2$gender==2] <- '여자' pie(table(dataset2$gender2)) ![]() |
4. 본문에서 생성된 dataset2의 age컬럼을 대상으로 30세이하 -> 1, 30-55세 -> 2, 55이상 -> 3으로 리코딩하여 age3컬럼에 추가한 뒤에 age, age2, age3 컬럼만 확인하시오.
dataset2$age2[dataset2$age <= 30] <- "청년층" dataset2$age2[dataset2$age > 30 & dataset2$age <= 55] <- "중년층" dataset2$age2[dataset2$age > 55 ] <- "장년층" dataset2$age3[dataset2$age <=30] <- 1 dataset2$age3[dataset2$age > 30 & dataset2$age < 55] <- 2 dataset2$age3[dataset2$age >= 55 ] <- 3 dataset2[c("age", "age2","age3")] |
???
5. 정제된 data를 대상으로 작업 디렉터리(“C/Rwork/”)에 파일 이름을 "cleandata.csv”로 하여 따옴표와 행 이름을 제거하여 저장하고, 저장된 파일의 내용을 읽어 new_data변수에 저장하고 확인하시오.
setwd('C:/Rwork/') getwd() write.csv(dataset2, "cleandata.csv", quote = F, row.names = F) new_data=read.csv("cleandata.csv", header = TRUE) new_data |
6. dataset3 내 “user_data.csv”, “return_data.csv”파일을 이용하여 고객별 반폼사유코드 (return_code)를 대상으로 다음과 같이 파생변수를 추가하시오.
setwd('C:/Rwork/dataset3/dataset3') user_data =read.csv("user_data.csv", header = TRUE) return_data =read.csv("return_data.csv", header = TRUE) str(user_data) str(return_data) library(reshape2) return <- dcast(return_data, user_id~return_code,length) names(return) <- c('user_id', '제품이상(1)', '변심(2)', '원인불명(3)', '기타(4)') user_return_data <- join(user_data, return, by = 'user_id') user_return_data |
반품사유코드에 대한 파생변수 컬럼명 설명
7. iris데이터를 이용하여 5겹 2회 반복하는 교차 검정 데이터를 샘플링하시오
install.packages("cvTools") library(cvTools) head(iris) cross <- cvFolds(n = nrow(iris), K = 5, R = 2, type = "random") head(cross) r = 1:2 K = 1:5 for(j in r){ for(i in K) { datas_idx <- cross$subsets[cross$which == i, j] cat('K = ', i,'j =',j, '검정데이터 \n') print(iris[datas_idx, ]) cat('K = ', i,'j =',j, '훈련데이터 \n') print(iris[-datas_idx, ]) } } |
'Q.' 카테고리의 다른 글
[ R ] 교차분석과 카이제곱 연습문제 ch12 (0) | 2022.11.24 |
---|---|
[ R ] ch 13 연습문제 (0) | 2022.11.23 |
[ R ]연습문제 (5) 5->6 (0) | 2022.11.20 |
[ R ] 연습문제 (4) (0) | 2022.11.18 |
[ R ] 연습문제 (1) (0) | 2022.11.16 |