59doit

[ R ] 연습문제 (6) 6-> ch7 본문

Q.

[ R ] 연습문제 (6) 6-> ch7

yul_S2 2022. 11. 22. 09:28
반응형

 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)를 대상으로 다음과 같이 파생변수를 추가하시오.

return_data.csv
0.00MB
new_data.csv
0.01MB

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
Comments