※ sample() 함수를 사용하는 경우 set.seed(100)을 먼저 실행하시오.
1. 다음과 같이 결측값이 포함된 데이터셋 ds를 생성한 후, 다음 문제를 해결하기 위한 R 코드를 작성하시오.
ds <- state.x77
ds[2,3] <- NA; ds[3,1] <- NA; ds[2,4] <- NA; ds[4,3] <- NA
# 위와 같은 결측값이 포함된 데이터쳇 ds를 생성하기 위해 다음 R code를 실행하시오.
ds <- state.x77
ds[2,3] <- NA; ds[3,1] <- NA; ds[2,4] <- NA; ds[4,3] <- NA
- 각 열별로 결측값이 몇 개인지 출력하시오.
colSums(is.na(ds))
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## 1 0 2 1 0 0 0 0
- 결측값이 포함된 행들의 데이터를 출력하시오.
ds[rowSums(is.na(ds))>0,] # ds[!complete.cases(ds),]
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alaska 365 6315 NA NA 11.3 66.7 152 566432
## Arizona NA 4530 1.8 70.55 7.8 58.1 15 113417
## Arkansas 2110 3378 NA 70.66 10.1 39.9 65 51945
- 결측값이 포함된 행은 몇 개인지 출력하시오.
sum(!complete.cases(ds))
## [1] 3
- 결측값이 포함된 행들을 제외하고 새로운 데이터셋 ds.new를 만들어보시오.
ds.new <- ds[complete.cases(ds),]
ds.new
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alabama 3615 3624 2.1 69.05 15.1 41.3 20 50708
## California 21198 5114 1.1 71.71 10.3 62.6 20 156361
## Colorado 2541 4884 0.7 72.06 6.8 63.9 166 103766
## Connecticut 3100 5348 1.1 72.48 3.1 56.0 139 4862
## Delaware 579 4809 0.9 70.06 6.2 54.6 103 1982
## Florida 8277 4815 1.3 70.66 10.7 52.6 11 54090
## Georgia 4931 4091 2.0 68.54 13.9 40.6 60 58073
## Hawaii 868 4963 1.9 73.60 6.2 61.9 0 6425
## Idaho 813 4119 0.6 71.87 5.3 59.5 126 82677
## Illinois 11197 5107 0.9 70.14 10.3 52.6 127 55748
## Indiana 5313 4458 0.7 70.88 7.1 52.9 122 36097
## Iowa 2861 4628 0.5 72.56 2.3 59.0 140 55941
## Kansas 2280 4669 0.6 72.58 4.5 59.9 114 81787
## Kentucky 3387 3712 1.6 70.10 10.6 38.5 95 39650
## Louisiana 3806 3545 2.8 68.76 13.2 42.2 12 44930
## Maine 1058 3694 0.7 70.39 2.7 54.7 161 30920
## Maryland 4122 5299 0.9 70.22 8.5 52.3 101 9891
## Massachusetts 5814 4755 1.1 71.83 3.3 58.5 103 7826
## Michigan 9111 4751 0.9 70.63 11.1 52.8 125 56817
## Minnesota 3921 4675 0.6 72.96 2.3 57.6 160 79289
## Mississippi 2341 3098 2.4 68.09 12.5 41.0 50 47296
## Missouri 4767 4254 0.8 70.69 9.3 48.8 108 68995
## Montana 746 4347 0.6 70.56 5.0 59.2 155 145587
## Nebraska 1544 4508 0.6 72.60 2.9 59.3 139 76483
## Nevada 590 5149 0.5 69.03 11.5 65.2 188 109889
## New Hampshire 812 4281 0.7 71.23 3.3 57.6 174 9027
## New Jersey 7333 5237 1.1 70.93 5.2 52.5 115 7521
## New Mexico 1144 3601 2.2 70.32 9.7 55.2 120 121412
## New York 18076 4903 1.4 70.55 10.9 52.7 82 47831
## North Carolina 5441 3875 1.8 69.21 11.1 38.5 80 48798
## North Dakota 637 5087 0.8 72.78 1.4 50.3 186 69273
## Ohio 10735 4561 0.8 70.82 7.4 53.2 124 40975
## Oklahoma 2715 3983 1.1 71.42 6.4 51.6 82 68782
## Oregon 2284 4660 0.6 72.13 4.2 60.0 44 96184
## Pennsylvania 11860 4449 1.0 70.43 6.1 50.2 126 44966
## Rhode Island 931 4558 1.3 71.90 2.4 46.4 127 1049
## South Carolina 2816 3635 2.3 67.96 11.6 37.8 65 30225
## South Dakota 681 4167 0.5 72.08 1.7 53.3 172 75955
## Tennessee 4173 3821 1.7 70.11 11.0 41.8 70 41328
## Texas 12237 4188 2.2 70.90 12.2 47.4 35 262134
## Utah 1203 4022 0.6 72.90 4.5 67.3 137 82096
## Vermont 472 3907 0.6 71.64 5.5 57.1 168 9267
## Virginia 4981 4701 1.4 70.08 9.5 47.8 85 39780
## Washington 3559 4864 0.6 71.72 4.3 63.5 32 66570
## West Virginia 1799 3617 1.4 69.48 6.7 41.6 100 24070
## Wisconsin 4589 4468 0.7 72.48 3.0 54.5 149 54464
## Wyoming 376 4566 0.6 70.29 6.9 62.9 173 97203
2. 다음과 같이 state.x77 데이터셋을 st에 저장한 후 다음 문제를 해결하기 위한 R 코드를 작성하시오.
st <- data.frame(state.x77)
# state.x77 데이터셋을 데이터프레임으로 변환하여 st에 저장하는 다음 R 코드를 실행하시오
st <- data.frame(state.x77)
(2) 특이값이 존재하는 경우 이상치를 NA로 대체하여 저장하시오.
for(i in 1:ncol(st)){
out.val <- boxplot.stats(st[,i])$out
st[ st[,i] %in% out.val, i] <- NA
}
st
(3) st에서 NA가 존재하는 행들을 제거하여 st2에 저장하시오.
st2 <- st[complete.cases(st),]
st2
3. R에서 제공하는 airquality 데이터셋에 대해 다음의 문제를 해결하기 위한 R 코드를 작성하시오.
(1) airquality를 AQ에 저장하시오.
AQ <- airquality
(2) AQ에서 열별로 NA의 개수를 출력하시오.
colSums(is.na(AQ))
## Ozone Solar.R Wind Temp Month Day
## 37 7 0 0 0 0
(3) AQ에서 행별로 NA의 개수를 출력하시오.
result <- rowSums(is.na(AQ))
for(i in 1:nrow(AQ)){
cat("row ",i,":",result[i],'\n')
}
## row 1 : 0
## row 2 : 0
## row 3 : 0
## row 4 : 0
## row 5 : 2
## row 6 : 1
## row 7 : 0
## row 8 : 0
## row 9 : 0
## row 10 : 1
## row 11 : 1
## row 12 : 0
## row 13 : 0
## row 14 : 0
## row 15 : 0
## row 16 : 0
## row 17 : 0
## row 18 : 0
## row 19 : 0
## row 20 : 0
## row 21 : 0
## row 22 : 0
## row 23 : 0
## row 24 : 0
## row 25 : 1
## row 26 : 1
## row 27 : 2
## row 28 : 0
## row 29 : 0
## row 30 : 0
## row 31 : 0
## row 32 : 1
## row 33 : 1
## row 34 : 1
## row 35 : 1
## row 36 : 1
## row 37 : 1
## row 38 : 0
## row 39 : 1
## row 40 : 0
## row 41 : 0
## row 42 : 1
## row 43 : 1
## row 44 : 0
## row 45 : 1
## row 46 : 1
## row 47 : 0
## row 48 : 0
## row 49 : 0
## row 50 : 0
## row 51 : 0
## row 52 : 1
## row 53 : 1
## row 54 : 1
## row 55 : 1
## row 56 : 1
## row 57 : 1
## row 58 : 1
## row 59 : 1
## row 60 : 1
## row 61 : 1
## row 62 : 0
## row 63 : 0
## row 64 : 0
## row 65 : 1
## row 66 : 0
## row 67 : 0
## row 68 : 0
## row 69 : 0
## row 70 : 0
## row 71 : 0
## row 72 : 1
## row 73 : 0
## row 74 : 0
## row 75 : 1
## row 76 : 0
## row 77 : 0
## row 78 : 0
## row 79 : 0
## row 80 : 0
## row 81 : 0
## row 82 : 0
## row 83 : 1
## row 84 : 1
## row 85 : 0
## row 86 : 0
## row 87 : 0
## row 88 : 0
## row 89 : 0
## row 90 : 0
## row 91 : 0
## row 92 : 0
## row 93 : 0
## row 94 : 0
## row 95 : 0
## row 96 : 1
## row 97 : 1
## row 98 : 1
## row 99 : 0
## row 100 : 0
## row 101 : 0
## row 102 : 1
## row 103 : 1
## row 104 : 0
## row 105 : 0
## row 106 : 0
## row 107 : 1
## row 108 : 0
## row 109 : 0
## row 110 : 0
## row 111 : 0
## row 112 : 0
## row 113 : 0
## row 114 : 0
## row 115 : 1
## row 116 : 0
## row 117 : 0
## row 118 : 0
## row 119 : 1
## row 120 : 0
## row 121 : 0
## row 122 : 0
## row 123 : 0
## row 124 : 0
## row 125 : 0
## row 126 : 0
## row 127 : 0
## row 128 : 0
## row 129 : 0
## row 130 : 0
## row 131 : 0
## row 132 : 0
## row 133 : 0
## row 134 : 0
## row 135 : 0
## row 136 : 0
## row 137 : 0
## row 138 : 0
## row 139 : 0
## row 140 : 0
## row 141 : 0
## row 142 : 0
## row 143 : 0
## row 144 : 0
## row 145 : 0
## row 146 : 0
## row 147 : 0
## row 148 : 0
## row 149 : 0
## row 150 : 1
## row 151 : 0
## row 152 : 0
## row 153 : 0
(4) AQ에서 NA를 포함하지 않은 행들만 출력하시오.
AQ[complete.cases(AQ),]
(5) AQ에서 NA를 NA가 속한 열의 평균값으로 치환하여 AQ2로 저장하고, AQ2의 내용을 출력하시오.
colmean <- colMeans(AQ,na.rm = TRUE)
AQ2 <- AQ
for(i in 1:ncol(AQ2)){
AQ2[is.na(AQ2[,i]),i] <- colmean[i]
}
AQ2
4. R에서 제공하는 state.x77 데이터셋에 대하여 다음 문제를 해결하기 위한 R 코드를 작성하시오.
(1) state.x77 데이터셋을 Population(인구수)를 기준으로 오름차순 정렬하시오.
state.x77[order(state.x77[,'Population']),]
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alaska 365 6315 1.5 69.31 11.3 66.7 152 566432
## Wyoming 376 4566 0.6 70.29 6.9 62.9 173 97203
## Vermont 472 3907 0.6 71.64 5.5 57.1 168 9267
## Delaware 579 4809 0.9 70.06 6.2 54.6 103 1982
## Nevada 590 5149 0.5 69.03 11.5 65.2 188 109889
## North Dakota 637 5087 0.8 72.78 1.4 50.3 186 69273
## South Dakota 681 4167 0.5 72.08 1.7 53.3 172 75955
## Montana 746 4347 0.6 70.56 5.0 59.2 155 145587
## New Hampshire 812 4281 0.7 71.23 3.3 57.6 174 9027
## Idaho 813 4119 0.6 71.87 5.3 59.5 126 82677
## Hawaii 868 4963 1.9 73.60 6.2 61.9 0 6425
## Rhode Island 931 4558 1.3 71.90 2.4 46.4 127 1049
## Maine 1058 3694 0.7 70.39 2.7 54.7 161 30920
## New Mexico 1144 3601 2.2 70.32 9.7 55.2 120 121412
## Utah 1203 4022 0.6 72.90 4.5 67.3 137 82096
## Nebraska 1544 4508 0.6 72.60 2.9 59.3 139 76483
## West Virginia 1799 3617 1.4 69.48 6.7 41.6 100 24070
## Arkansas 2110 3378 1.9 70.66 10.1 39.9 65 51945
## Arizona 2212 4530 1.8 70.55 7.8 58.1 15 113417
## Kansas 2280 4669 0.6 72.58 4.5 59.9 114 81787
## Oregon 2284 4660 0.6 72.13 4.2 60.0 44 96184
## Mississippi 2341 3098 2.4 68.09 12.5 41.0 50 47296
## Colorado 2541 4884 0.7 72.06 6.8 63.9 166 103766
## Oklahoma 2715 3983 1.1 71.42 6.4 51.6 82 68782
## South Carolina 2816 3635 2.3 67.96 11.6 37.8 65 30225
## Iowa 2861 4628 0.5 72.56 2.3 59.0 140 55941
## Connecticut 3100 5348 1.1 72.48 3.1 56.0 139 4862
## Kentucky 3387 3712 1.6 70.10 10.6 38.5 95 39650
## Washington 3559 4864 0.6 71.72 4.3 63.5 32 66570
## Alabama 3615 3624 2.1 69.05 15.1 41.3 20 50708
## Louisiana 3806 3545 2.8 68.76 13.2 42.2 12 44930
## Minnesota 3921 4675 0.6 72.96 2.3 57.6 160 79289
## Maryland 4122 5299 0.9 70.22 8.5 52.3 101 9891
## Tennessee 4173 3821 1.7 70.11 11.0 41.8 70 41328
## Wisconsin 4589 4468 0.7 72.48 3.0 54.5 149 54464
## Missouri 4767 4254 0.8 70.69 9.3 48.8 108 68995
## Georgia 4931 4091 2.0 68.54 13.9 40.6 60 58073
## Virginia 4981 4701 1.4 70.08 9.5 47.8 85 39780
## Indiana 5313 4458 0.7 70.88 7.1 52.9 122 36097
## North Carolina 5441 3875 1.8 69.21 11.1 38.5 80 48798
## Massachusetts 5814 4755 1.1 71.83 3.3 58.5 103 7826
## New Jersey 7333 5237 1.1 70.93 5.2 52.5 115 7521
## Florida 8277 4815 1.3 70.66 10.7 52.6 11 54090
## Michigan 9111 4751 0.9 70.63 11.1 52.8 125 56817
## Ohio 10735 4561 0.8 70.82 7.4 53.2 124 40975
## Illinois 11197 5107 0.9 70.14 10.3 52.6 127 55748
## Pennsylvania 11860 4449 1.0 70.43 6.1 50.2 126 44966
## Texas 12237 4188 2.2 70.90 12.2 47.4 35 262134
## New York 18076 4903 1.4 70.55 10.9 52.7 82 47831
## California 21198 5114 1.1 71.71 10.3 62.6 20 156361
(2) state.x77 데이터셋을 Income(소득)을 기준으로 내림차순 정렬하시오.
state.x77[order(state.x77[,'Income'],decreasing = TRUE),]
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alaska 365 6315 1.5 69.31 11.3 66.7 152 566432
## Connecticut 3100 5348 1.1 72.48 3.1 56.0 139 4862
## Maryland 4122 5299 0.9 70.22 8.5 52.3 101 9891
## New Jersey 7333 5237 1.1 70.93 5.2 52.5 115 7521
## Nevada 590 5149 0.5 69.03 11.5 65.2 188 109889
## California 21198 5114 1.1 71.71 10.3 62.6 20 156361
## Illinois 11197 5107 0.9 70.14 10.3 52.6 127 55748
## North Dakota 637 5087 0.8 72.78 1.4 50.3 186 69273
## Hawaii 868 4963 1.9 73.60 6.2 61.9 0 6425
## New York 18076 4903 1.4 70.55 10.9 52.7 82 47831
## Colorado 2541 4884 0.7 72.06 6.8 63.9 166 103766
## Washington 3559 4864 0.6 71.72 4.3 63.5 32 66570
## Florida 8277 4815 1.3 70.66 10.7 52.6 11 54090
## Delaware 579 4809 0.9 70.06 6.2 54.6 103 1982
## Massachusetts 5814 4755 1.1 71.83 3.3 58.5 103 7826
## Michigan 9111 4751 0.9 70.63 11.1 52.8 125 56817
## Virginia 4981 4701 1.4 70.08 9.5 47.8 85 39780
## Minnesota 3921 4675 0.6 72.96 2.3 57.6 160 79289
## Kansas 2280 4669 0.6 72.58 4.5 59.9 114 81787
## Oregon 2284 4660 0.6 72.13 4.2 60.0 44 96184
## Iowa 2861 4628 0.5 72.56 2.3 59.0 140 55941
## Wyoming 376 4566 0.6 70.29 6.9 62.9 173 97203
## Ohio 10735 4561 0.8 70.82 7.4 53.2 124 40975
## Rhode Island 931 4558 1.3 71.90 2.4 46.4 127 1049
## Arizona 2212 4530 1.8 70.55 7.8 58.1 15 113417
## Nebraska 1544 4508 0.6 72.60 2.9 59.3 139 76483
## Wisconsin 4589 4468 0.7 72.48 3.0 54.5 149 54464
## Indiana 5313 4458 0.7 70.88 7.1 52.9 122 36097
## Pennsylvania 11860 4449 1.0 70.43 6.1 50.2 126 44966
## Montana 746 4347 0.6 70.56 5.0 59.2 155 145587
## New Hampshire 812 4281 0.7 71.23 3.3 57.6 174 9027
## Missouri 4767 4254 0.8 70.69 9.3 48.8 108 68995
## Texas 12237 4188 2.2 70.90 12.2 47.4 35 262134
## South Dakota 681 4167 0.5 72.08 1.7 53.3 172 75955
## Idaho 813 4119 0.6 71.87 5.3 59.5 126 82677
## Georgia 4931 4091 2.0 68.54 13.9 40.6 60 58073
## Utah 1203 4022 0.6 72.90 4.5 67.3 137 82096
## Oklahoma 2715 3983 1.1 71.42 6.4 51.6 82 68782
## Vermont 472 3907 0.6 71.64 5.5 57.1 168 9267
## North Carolina 5441 3875 1.8 69.21 11.1 38.5 80 48798
## Tennessee 4173 3821 1.7 70.11 11.0 41.8 70 41328
## Kentucky 3387 3712 1.6 70.10 10.6 38.5 95 39650
## Maine 1058 3694 0.7 70.39 2.7 54.7 161 30920
## South Carolina 2816 3635 2.3 67.96 11.6 37.8 65 30225
## Alabama 3615 3624 2.1 69.05 15.1 41.3 20 50708
## West Virginia 1799 3617 1.4 69.48 6.7 41.6 100 24070
## New Mexico 1144 3601 2.2 70.32 9.7 55.2 120 121412
## Louisiana 3806 3545 2.8 68.76 13.2 42.2 12 44930
## Arkansas 2110 3378 1.9 70.66 10.1 39.9 65 51945
## Mississippi 2341 3098 2.4 68.09 12.5 41.0 50 47296
(3) Illiteracy(문맹률)가 낮은 상위 10개 주의 이름과 문맹률을 출력하시오.
st <- state.x77[order(state.x77[,'Illiteracy']),]
st[1:10,'Illiteracy']
## Iowa Nevada South Dakota Idaho Kansas Minnesota Montana Nebraska Oregon Utah
## 0.5 0.5 0.5 0.6 0.6 0.6 0.6 0.6 0.6 0.6
(5) R에서 제공하는 mtcars 데이터셋에 대하여 다음 문제를 해결하기 위한 R 코드를 작성하시오.
- mtcars 데이터셋을 gear(기어) 갯수별로 그룹을 나누어 mt.gear에 저장하시오.(단, split() 함수를 사용하시오.)
mt.gear <- split(mtcars, mtcars$gear)
mt.gear
## $`3`
## mpg cyl disp hp drat wt qsec vs am gear carb
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
##
## $`4`
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
##
## $`5`
## mpg cyl disp hp drat wt qsec vs am gear carb
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.7 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.5 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.5 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.6 0 1 5 8
- mt.gear에서 gear(기어) 갯수가 4인 그룹의 데이터를 출력하시오.
mt.gear$`4`
- mt.gear에서 gear(기어)의 개수가 3인 그룹과 5인 그룹의 데이터를 행결합하여 mt.gear.35에 저장하고 내용을 출력하시오.
mt.gear.35 <- rbind(mt.gear$`3`,mt.gear$`5`)
mt.gear.35
- mtcars 데이터셋에서 wt(중량)가 1.5이상 3.0미만인 행들을 추출하여 출력하시오.
subset(mtcars, mtcars$wt>=1.5 & mtcars$wt<3.0)
6. mlbench 패키지에서 제공하는 Glass 데이터셋에 대해 다음의 문제를 해결하기 위한 R 코드를 작성하시오.
(1) mlbench 패키지 적재후(설치안된 경우 설치후 적재), 해당 패키지내 Glass 데이터셋을 myds에 저장하시오.
# install.packages("mlbench")
library(mlbench)
data("Glass")
myds <- Glass
myds
2) myds에서 Type 열의 값을 그룹으로 하여 RI, Na, Mg, Al, Si 열의 값들의 평균을 구하시오.(주의: 집계 작업시 팩터 타입의 열은 제외해야 한다.)
aggregate(myds[,c('RI','Na','Mg','Al','Si')],by=list(Type=myds$Type),FUN = mean)
7. mlbench 패키지에서 제공하는 Ionosphere 데이터셋에 대해 다음의 문제를 해결하기 위한 R 코드를 작성하시오.
(1) Ionosphere 데이터셋을 적재후 myds에 저장하시오.
library(mlbench)
data("Ionosphere")
myds <- Ionosphere
(2) myds에서 class 와 V1열의 값을 그룹으로 하여 V3~V10 열의 값들의 표준편차를 출력하시오(주의 집계 작업시 팩터 타입의 열은 제외해야 한다).
ds <- aggregate(myds[,-c(1,2,35)],by=list(class=myds$Class, V1=myds$V1),FUN=sd)
ds[,1:10]
8. state.x77 데이터셋에서 임의의 20개 행을 추출하여 st20에 저장하고, 나머지 행들은 st.other에 저장하시오. 그리고 st20과 st.other의 내용을 출력하시오.
set.seed(100)
index <- sample(1:nrow(state.x77),20)
st20 <- state.x77[index,]
st.other <- state.x77[-index,]
st20
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Georgia 4931 4091 2.0 68.54 13.9 40.6 60 58073
## Pennsylvania 11860 4449 1.0 70.43 6.1 50.2 126 44966
## West Virginia 1799 3617 1.4 69.48 6.7 41.6 100 24070
## Missouri 4767 4254 0.8 70.69 9.3 48.8 108 68995
## Indiana 5313 4458 0.7 70.88 7.1 52.9 122 36097
## Utah 1203 4022 0.6 72.90 4.5 67.3 137 82096
## Minnesota 3921 4675 0.6 72.96 2.3 57.6 160 79289
## Michigan 9111 4751 0.9 70.63 11.1 52.8 125 56817
## Colorado 2541 4884 0.7 72.06 6.8 63.9 166 103766
## Arkansas 2110 3378 1.9 70.66 10.1 39.9 65 51945
## Tennessee 4173 3821 1.7 70.11 11.0 41.8 70 41328
## North Dakota 637 5087 0.8 72.78 1.4 50.3 186 69273
## Connecticut 3100 5348 1.1 72.48 3.1 56.0 139 4862
## Wisconsin 4589 4468 0.7 72.48 3.0 54.5 149 54464
## Louisiana 3806 3545 2.8 68.76 13.2 42.2 12 44930
## Idaho 813 4119 0.6 71.87 5.3 59.5 126 82677
## Delaware 579 4809 0.9 70.06 6.2 54.6 103 1982
## Oklahoma 2715 3983 1.1 71.42 6.4 51.6 82 68782
## Washington 3559 4864 0.6 71.72 4.3 63.5 32 66570
## Alaska 365 6315 1.5 69.31 11.3 66.7 152 566432
st.other
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alabama 3615 3624 2.1 69.05 15.1 41.3 20 50708
## Arizona 2212 4530 1.8 70.55 7.8 58.1 15 113417
## California 21198 5114 1.1 71.71 10.3 62.6 20 156361
## Florida 8277 4815 1.3 70.66 10.7 52.6 11 54090
## Hawaii 868 4963 1.9 73.60 6.2 61.9 0 6425
## Illinois 11197 5107 0.9 70.14 10.3 52.6 127 55748
## Iowa 2861 4628 0.5 72.56 2.3 59.0 140 55941
## Kansas 2280 4669 0.6 72.58 4.5 59.9 114 81787
## Kentucky 3387 3712 1.6 70.10 10.6 38.5 95 39650
## Maine 1058 3694 0.7 70.39 2.7 54.7 161 30920
## Maryland 4122 5299 0.9 70.22 8.5 52.3 101 9891
## Massachusetts 5814 4755 1.1 71.83 3.3 58.5 103 7826
## Mississippi 2341 3098 2.4 68.09 12.5 41.0 50 47296
## Montana 746 4347 0.6 70.56 5.0 59.2 155 145587
## Nebraska 1544 4508 0.6 72.60 2.9 59.3 139 76483
## Nevada 590 5149 0.5 69.03 11.5 65.2 188 109889
## New Hampshire 812 4281 0.7 71.23 3.3 57.6 174 9027
## New Jersey 7333 5237 1.1 70.93 5.2 52.5 115 7521
## New Mexico 1144 3601 2.2 70.32 9.7 55.2 120 121412
## New York 18076 4903 1.4 70.55 10.9 52.7 82 47831
## North Carolina 5441 3875 1.8 69.21 11.1 38.5 80 48798
## Ohio 10735 4561 0.8 70.82 7.4 53.2 124 40975
## Oregon 2284 4660 0.6 72.13 4.2 60.0 44 96184
## Rhode Island 931 4558 1.3 71.90 2.4 46.4 127 1049
## South Carolina 2816 3635 2.3 67.96 11.6 37.8 65 30225
## South Dakota 681 4167 0.5 72.08 1.7 53.3 172 75955
## Texas 12237 4188 2.2 70.90 12.2 47.4 35 262134
## Vermont 472 3907 0.6 71.64 5.5 57.1 168 9267
## Virginia 4981 4701 1.4 70.08 9.5 47.8 85 39780
## Wyoming 376 4566 0.6 70.29 6.9 62.9 173 97203
9.iris 데이터셋에서 각 품종별로 10개의 행을 임의로 추출하여 iris.10에 저장 후 iris.10의 내용을 첫 20행까지만 출력하시오.(품종 정보는 Species열에 존재하며, setosa, versicolor, virginica의 3개 품종이 존재하며 각 품종별 50개의 행이 있다고 가정한다.)
set.seed(100)
index <- sample(1:50,10)
setosa <- subset(iris,Species=='setosa')
versicolor <- subset(iris,iris$Species=='versicolor')
virginica <- subset(iris,iris$Species=='virginica')
iris.10 <- rbind(setosa[index,], versicolor[index,], virginica[index,])
iris.10[1:20,] # head(iris.10,20)
10. sample( ) 함수를 이용하여 iris 데이터셋의 행들의 순서를 임의로 바꾸어서(셔플링하여) 출력하시오.
set.seed(100)
iris[sample(1:nrow(iris),nrow(iris)),]
11. iris 데이터셋에서 3개의 Species(품종)를 2개씩 짝지어 출력하시오.combn()함수를 이용하시오.
combn(unique(iris$Species),2)
## [,1] [,2] [,3]
## [1,] setosa setosa versicolor
## [2,] versicolor virginica virginica
## Levels: setosa versicolor virginica
12. red, green, blue, black, yellow를 3개씩 짝지어 출력하시오. combn()함수를 이용하시오.
combn(c("red","green","blue","black","yellow"),3)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] "red" "red" "red" "red" "red" "red" "green" "green" "green" "blue"
## [2,] "green" "green" "green" "blue" "blue" "black" "blue" "blue" "black" "black"
## [3,] "blue" "black" "yellow" "black" "yellow" "yellow" "black" "yellow" "yellow" "yellow"
13. state.x77 데이터셋에서 Area(면적)가 Alabama 주보다 크고 California 주보다 작은 주의 이름과 Population(인구 수), Income(소득), Area(면적)를 출력하시오.
st <- data.frame(state.x77)
subset(st, Area>st["Alabama","Area"]&Area<st["California","Area"],select = c(Population, Income, Area))
14. 다음의 문제를 해결하기 위한 R코드를 작성하시오.
(1) 다음과 같이 데이터프레임 authors와 books를 생성하고 authors와 books의 내용을 출력하시오.
authors <- data.frame(
surname = c("Twein", "Venables", "Tierney", "Ripley", "McNeil"),
nationality = c("US", "Australia", "US", "UK", "Australia"),
retired = c("yes", rep("no", 4)))
books <- data.frame(
name = c("Johns", "Venables", "Tierney", "Ripley", "Ripley", "McNeil"),
title = c("Exploratory Data Analysis",
"Modern Applied Statistics ...",
"LISP-STAT",
"Spatial Statistics", "Stochastic Simulation",
"Interactive Data Analysis"),
other.author = c(NA, "Ripley", NA, NA, NA, NA))
# 다음 R code를 실행하시오.
authors <- data.frame(
surname = c("Twein", "Venables", "Tierney", "Ripley", "McNeil"),
nationality = c("US", "Australia", "US", "UK", "Australia"),
retired = c("yes", rep("no", 4)))
books <- data.frame(
name = c("Johns", "Venables", "Tierney", "Ripley", "Ripley", "McNeil"),
title = c("Exploratory Data Analysis",
"Modern Applied Statistics ...",
"LISP-STAT",
"Spatial Statistics", "Stochastic Simulation",
"Interactive Data Analysis"),
other.author = c(NA, "Ripley", NA, NA, NA, NA))
authors
books
(2) surname과 name을 공통 열로 하여 authors와 books를 병합하여 출력하시오(두 데이터프레임에서 공통 열의 값이 일치하는 것들만 병합).
merge(authors,books, by.x=c("surname"),by.y=c("name"))
(3) surname과 name을 공통 열로 하여 authors와 books를 병합하여 출력하되 authors의 행들이 모두 표시되도록 하시오.
merge(authors,books, by.x=c("surname"),by.y = c("name"),all.x = TRUE)
(4) surname과 name을 공통 열로 하여 authors와 books를 병합하여 출력하되 books의 행들은 모두 표시되도록 하시오.
merge(authors,books, by.x=c("surname"),by.y = c("name"),all.y = TRUE)
(5) surname과 other.author를 공통 열로 하여 authors와 books를 병합하여 출력하시오.
merge(authors,books, by.x=c("surname"),by.y = c("other.author"))