※ 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
  1. 각 열별로 결측값이 몇 개인지 출력하시오.
colSums(is.na(ds))
## Population     Income Illiteracy   Life Exp     Murder    HS Grad      Frost       Area 
##          1          0          2          1          0          0          0          0
  1. 결측값이 포함된 행들의 데이터를 출력하시오.
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
  1. 결측값이 포함된 행은 몇 개인지 출력하시오.
sum(!complete.cases(ds))
## [1] 3
  1. 결측값이 포함된 행들을 제외하고 새로운 데이터셋 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)
(1) st의 각 변수(열)들에 대해 특이값이 존재하는지 상자그림을 그려 확인하시오.
for(i in 1:ncol(st)){  # 1, 2, 8열에 특이값이 존재함
  boxplot(st[,i])
}

(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 코드를 작성하시오.

  1. 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
  1. mt.gear에서 gear(기어) 갯수가 4인 그룹의 데이터를 출력하시오.
mt.gear$`4`
  1. mt.gear에서 gear(기어)의 개수가 3인 그룹과 5인 그룹의 데이터를 행결합하여 mt.gear.35에 저장하고 내용을 출력하시오.
mt.gear.35 <- rbind(mt.gear$`3`,mt.gear$`5`)
mt.gear.35
  1. 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"))