과제 / 안진성

1. 변수명 바꾸기

mpg 데이터의 변수명은 긴 단어를 짧게 줄인 축약어로 되어있습니다. cty 변수는 도시 연비, hwy 변수는 고속도로 연비를 의미합니다. 변수명을 이해하기 쉬운 단어로 바꾸려고 합니다. mpg 데이터를 이용해서 아래 문제를 해결해 보세요.

Q1. ggplot2 패키지의 mpg 데이터를 사용할 수 있도록 불러온 뒤 복사본을 만드세요.

mpg<- as.data.frame(ggplot2::mpg)
mpg_new <- mpg

Q2. 복사본 데이터를 이용해서 cty는 city로, hwy는 highway로 변수명을 수정하세요.

mpg_new <- rename(mpg_new, city = cty)
mpg_new <- rename(mpg_new, highway = hwy)

Q3. 데이터 일부를 출력해서 변수명이 바뀌었는지 확인해 보세요. 아래와 같은 결과물이 출력되어야 합니다.

head(mpg_new)
  manufacturer model displ year cyl      trans drv city highway fl   class
1         audi    a4   1.8 1999   4   auto(l5)   f   18      29  p compact
2         audi    a4   1.8 1999   4 manual(m5)   f   21      29  p compact
3         audi    a4   2.0 2008   4 manual(m6)   f   20      31  p compact
4         audi    a4   2.0 2008   4   auto(av)   f   21      30  p compact
5         audi    a4   2.8 1999   6   auto(l5)   f   16      26  p compact
6         audi    a4   2.8 1999   6 manual(m5)   f   18      26  p compact

2.교과서 123쪽 문제 수행하기

ggplot2 패키지에는 미국 동북중부 437개 지역의 인구통계 정보를 담은 midwest라는 데이터가 포함되어 있습니다. midwest 데이터를 사용해 데이터 분석 문제를 해결해보세요.

Q1. ggplot2 의 midwest 데이터를 데이터 프레임 형태로 불러와서 데이터의 특성을 파악하세요.

midwest <- as.data.frame(ggplot2::midwest)
head(midwest)
##   PID    county state  area poptotal popdensity popwhite popblack popamerindian
## 1 561     ADAMS    IL 0.052    66090  1270.9615    63917     1702            98
## 2 562 ALEXANDER    IL 0.014    10626   759.0000     7054     3496            19
## 3 563      BOND    IL 0.022    14991   681.4091    14477      429            35
## 4 564     BOONE    IL 0.017    30806  1812.1176    29344      127            46
## 5 565     BROWN    IL 0.018     5836   324.2222     5264      547            14
## 6 566    BUREAU    IL 0.050    35688   713.7600    35157       50            65
##   popasian popother percwhite  percblack percamerindan  percasian  percother
## 1      249      124  96.71206  2.5752761     0.1482826 0.37675897 0.18762294
## 2       48        9  66.38434 32.9004329     0.1788067 0.45172219 0.08469791
## 3       16       34  96.57128  2.8617170     0.2334734 0.10673071 0.22680275
## 4      150     1139  95.25417  0.4122574     0.1493216 0.48691813 3.69733169
## 5        5        6  90.19877  9.3728581     0.2398903 0.08567512 0.10281014
## 6      195      221  98.51210  0.1401031     0.1821340 0.54640215 0.61925577
##   popadults  perchsd percollege percprof poppovertyknown percpovertyknown
## 1     43298 75.10740   19.63139 4.355859           63628         96.27478
## 2      6724 59.72635   11.24331 2.870315           10529         99.08714
## 3      9669 69.33499   17.03382 4.488572           14235         94.95697
## 4     19272 75.47219   17.27895 4.197800           30337         98.47757
## 5      3979 68.86152   14.47600 3.367680            4815         82.50514
## 6     23444 76.62941   18.90462 3.275891           35107         98.37200
##   percbelowpoverty percchildbelowpovert percadultpoverty percelderlypoverty
## 1        13.151443             18.01172        11.009776          12.443812
## 2        32.244278             45.82651        27.385647          25.228976
## 3        12.068844             14.03606        10.852090          12.697410
## 4         7.209019             11.17954         5.536013           6.217047
## 5        13.520249             13.02289        11.143211          19.200000
## 6        10.399635             14.15882         8.179287          11.008586
##   inmetro category
## 1       0      AAR
## 2       0      LHR
## 3       0      AAR
## 4       1      ALU
## 5       0      AAR
## 6       0      AAR
tail(midwest)
##      PID     county state  area poptotal popdensity popwhite popblack
## 432 3047 WASHINGTON    WI 0.025    95328  3813.1200    94465      125
## 433 3048   WAUKESHA    WI 0.034   304715  8962.2059   298313     1096
## 434 3049    WAUPACA    WI 0.045    46104  1024.5333    45695       22
## 435 3050   WAUSHARA    WI 0.037    19385   523.9189    19094       29
## 436 3051  WINNEBAGO    WI 0.035   140320  4009.1429   136822      697
## 437 3052       WOOD    WI 0.048    73605  1533.4375    72157       90
##     popamerindian popasian popother percwhite percblack percamerindan percasian
## 432           208      337      193  99.09470 0.1311262     0.2181940 0.3535163
## 433           672     2699     1935  97.89902 0.3596804     0.2205339 0.8857457
## 434           125       92      170  99.11288 0.0477182     0.2711262 0.1995488
## 435            70       43      149  98.49884 0.1496002     0.3611040 0.2218210
## 436           685     1728      388  97.50713 0.4967218     0.4881699 1.2314709
## 437           481      722      155  98.03274 0.1222743     0.6534882 0.9809116
##     percother popadults  perchsd percollege percprof poppovertyknown
## 432 0.2024589     59583 81.34032   23.39090 4.014568           94143
## 433 0.6350196    195837 87.98899   35.39678 7.667090          299802
## 434 0.3687316     30109 72.13790   16.54987 3.138596           44412
## 435 0.7686355     13316 70.00601   15.06458 2.620907           19163
## 436 0.2765108     88960 80.61938   24.99550 5.659847          133950
## 437 0.2105835     46796 78.29515   21.66638 4.583725           72685
##     percpovertyknown percbelowpoverty percchildbelowpovert percadultpoverty
## 432         98.75692         3.237628             4.069854         2.584500
## 433         98.38767         3.121060             3.785820         2.590061
## 434         96.33004         8.488697            10.071411         6.953799
## 435         98.85478        13.786985            20.050708        11.695784
## 436         95.46038         8.804031            10.592031         8.660587
## 437         98.75008         8.525831            11.162997         7.375656
##     percelderlypoverty inmetro category
## 432           4.280889       1      HLU
## 433           4.085479       1      HLU
## 434          10.338641       0      AAR
## 435          11.804558       0      AAR
## 436           6.661094       1      HAU
## 437           7.882918       0      AAR
View(midwest) 
dim(midwest) 
## [1] 437  28
str(midwest) 
## 'data.frame':    437 obs. of  28 variables:
##  $ PID                 : int  561 562 563 564 565 566 567 568 569 570 ...
##  $ county              : chr  "ADAMS" "ALEXANDER" "BOND" "BOONE" ...
##  $ state               : chr  "IL" "IL" "IL" "IL" ...
##  $ area                : num  0.052 0.014 0.022 0.017 0.018 0.05 0.017 0.027 0.024 0.058 ...
##  $ poptotal            : int  66090 10626 14991 30806 5836 35688 5322 16805 13437 173025 ...
##  $ popdensity          : num  1271 759 681 1812 324 ...
##  $ popwhite            : int  63917 7054 14477 29344 5264 35157 5298 16519 13384 146506 ...
##  $ popblack            : int  1702 3496 429 127 547 50 1 111 16 16559 ...
##  $ popamerindian       : int  98 19 35 46 14 65 8 30 8 331 ...
##  $ popasian            : int  249 48 16 150 5 195 15 61 23 8033 ...
##  $ popother            : int  124 9 34 1139 6 221 0 84 6 1596 ...
##  $ percwhite           : num  96.7 66.4 96.6 95.3 90.2 ...
##  $ percblack           : num  2.575 32.9 2.862 0.412 9.373 ...
##  $ percamerindan       : num  0.148 0.179 0.233 0.149 0.24 ...
##  $ percasian           : num  0.3768 0.4517 0.1067 0.4869 0.0857 ...
##  $ percother           : num  0.1876 0.0847 0.2268 3.6973 0.1028 ...
##  $ popadults           : int  43298 6724 9669 19272 3979 23444 3583 11323 8825 95971 ...
##  $ perchsd             : num  75.1 59.7 69.3 75.5 68.9 ...
##  $ percollege          : num  19.6 11.2 17 17.3 14.5 ...
##  $ percprof            : num  4.36 2.87 4.49 4.2 3.37 ...
##  $ poppovertyknown     : int  63628 10529 14235 30337 4815 35107 5241 16455 13081 154934 ...
##  $ percpovertyknown    : num  96.3 99.1 95 98.5 82.5 ...
##  $ percbelowpoverty    : num  13.15 32.24 12.07 7.21 13.52 ...
##  $ percchildbelowpovert: num  18 45.8 14 11.2 13 ...
##  $ percadultpoverty    : num  11.01 27.39 10.85 5.54 11.14 ...
##  $ percelderlypoverty  : num  12.44 25.23 12.7 6.22 19.2 ...
##  $ inmetro             : int  0 0 0 1 0 0 0 0 0 1 ...
##  $ category            : chr  "AAR" "LHR" "AAR" "ALU" ...
summary(midwest)
##       PID          county             state                area        
##  Min.   : 561   Length:437         Length:437         Min.   :0.00500  
##  1st Qu.: 670   Class :character   Class :character   1st Qu.:0.02400  
##  Median :1221   Mode  :character   Mode  :character   Median :0.03000  
##  Mean   :1437                                         Mean   :0.03317  
##  3rd Qu.:2059                                         3rd Qu.:0.03800  
##  Max.   :3052                                         Max.   :0.11000  
##     poptotal         popdensity          popwhite          popblack      
##  Min.   :   1701   Min.   :   85.05   Min.   :    416   Min.   :      0  
##  1st Qu.:  18840   1st Qu.:  622.41   1st Qu.:  18630   1st Qu.:     29  
##  Median :  35324   Median : 1156.21   Median :  34471   Median :    201  
##  Mean   :  96130   Mean   : 3097.74   Mean   :  81840   Mean   :  11024  
##  3rd Qu.:  75651   3rd Qu.: 2330.00   3rd Qu.:  72968   3rd Qu.:   1291  
##  Max.   :5105067   Max.   :88018.40   Max.   :3204947   Max.   :1317147  
##  popamerindian        popasian         popother        percwhite    
##  Min.   :    4.0   Min.   :     0   Min.   :     0   Min.   :10.69  
##  1st Qu.:   44.0   1st Qu.:    35   1st Qu.:    20   1st Qu.:94.89  
##  Median :   94.0   Median :   102   Median :    66   Median :98.03  
##  Mean   :  343.1   Mean   :  1310   Mean   :  1613   Mean   :95.56  
##  3rd Qu.:  288.0   3rd Qu.:   401   3rd Qu.:   345   3rd Qu.:99.07  
##  Max.   :10289.0   Max.   :188565   Max.   :384119   Max.   :99.82  
##    percblack       percamerindan        percasian        percother      
##  Min.   : 0.0000   Min.   : 0.05623   Min.   :0.0000   Min.   :0.00000  
##  1st Qu.: 0.1157   1st Qu.: 0.15793   1st Qu.:0.1737   1st Qu.:0.09102  
##  Median : 0.5390   Median : 0.21502   Median :0.2972   Median :0.17844  
##  Mean   : 2.6763   Mean   : 0.79894   Mean   :0.4872   Mean   :0.47906  
##  3rd Qu.: 2.6014   3rd Qu.: 0.38362   3rd Qu.:0.5212   3rd Qu.:0.48050  
##  Max.   :40.2100   Max.   :89.17738   Max.   :5.0705   Max.   :7.52427  
##    popadults          perchsd        percollege        percprof      
##  Min.   :   1287   Min.   :46.91   Min.   : 7.336   Min.   : 0.5203  
##  1st Qu.:  12271   1st Qu.:71.33   1st Qu.:14.114   1st Qu.: 2.9980  
##  Median :  22188   Median :74.25   Median :16.798   Median : 3.8142  
##  Mean   :  60973   Mean   :73.97   Mean   :18.273   Mean   : 4.4473  
##  3rd Qu.:  47541   3rd Qu.:77.20   3rd Qu.:20.550   3rd Qu.: 4.9493  
##  Max.   :3291995   Max.   :88.90   Max.   :48.079   Max.   :20.7913  
##  poppovertyknown   percpovertyknown percbelowpoverty percchildbelowpovert
##  Min.   :   1696   Min.   :80.90    Min.   : 2.180   Min.   : 1.919      
##  1st Qu.:  18364   1st Qu.:96.89    1st Qu.: 9.199   1st Qu.:11.624      
##  Median :  33788   Median :98.17    Median :11.822   Median :15.270      
##  Mean   :  93642   Mean   :97.11    Mean   :12.511   Mean   :16.447      
##  3rd Qu.:  72840   3rd Qu.:98.60    3rd Qu.:15.133   3rd Qu.:20.352      
##  Max.   :5023523   Max.   :99.86    Max.   :48.691   Max.   :64.308      
##  percadultpoverty percelderlypoverty    inmetro         category        
##  Min.   : 1.938   Min.   : 3.547     Min.   :0.0000   Length:437        
##  1st Qu.: 7.668   1st Qu.: 8.912     1st Qu.:0.0000   Class :character  
##  Median :10.008   Median :10.869     Median :0.0000   Mode  :character  
##  Mean   :10.919   Mean   :11.389     Mean   :0.3432                     
##  3rd Qu.:13.182   3rd Qu.:13.412     3rd Qu.:1.0000                     
##  Max.   :43.312   Max.   :31.162     Max.   :1.0000

Q2. poptotal(전체 인구)을 total 로, popasian(아시아 인구)을 asian 으로 변수명을 수정하세요.

midwest <- rename(midwest,total=poptotal)
midwest <- rename(midwest,asian=popasian)

Q3. total, asian 변수를 이용해 ‘전체 인구 대비 아시아 인구 백분율’ 파생변수를 만들고, 히스토그램을 만들어 도시들이 어떻게 분포하는지 살펴보세요.

midwest$ratio <- midwest$asian/midwest$total*100
hist(midwest$ratio)

Q4. 아시아 인구 백분율 전체 평균을 구하고, 평균을 초과하면 “large”, 그 외에는 “small”을 부여하는 파생변수를 만들어 보세요.

mean(midwest$ratio)
## [1] 0.4872462
midwest$ratio_if<-ifelse(midwest$ratio>mean(midwest$ratio),"large","small")
midwest$ratio_if
##   [1] "small" "small" "small" "small" "small" "large" "small" "small" "small"
##  [10] "large" "small" "small" "small" "small" "large" "large" "small" "small"
##  [19] "large" "small" "small" "large" "small" "small" "small" "small" "small"
##  [28] "small" "small" "small" "small" "small" "small" "small" "small" "small"
##  [37] "small" "small" "large" "small" "small" "small" "small" "small" "large"
##  [46] "large" "large" "large" "large" "large" "small" "large" "small" "small"
##  [55] "large" "large" "large" "small" "small" "large" "large" "small" "small"
##  [64] "small" "small" "small" "small" "small" "small" "small" "small" "large"
##  [73] "small" "small" "small" "small" "small" "small" "small" "small" "large"
##  [82] "large" "small" "large" "small" "small" "small" "small" "large" "small"
##  [91] "small" "large" "large" "small" "small" "small" "small" "small" "large"
## [100] "small" "large" "small" "small" "large" "large" "small" "small" "small"
## [109] "small" "small" "small" "small" "small" "small" "small" "small" "small"
## [118] "large" "small" "large" "small" "large" "small" "small" "small" "small"
## [127] "small" "small" "large" "small" "large" "small" "small" "small" "small"
## [136] "large" "small" "large" "small" "small" "small" "small" "large" "small"
## [145] "large" "small" "large" "small" "small" "small" "large" "small" "small"
## [154] "large" "large" "small" "small" "small" "small" "small" "small" "small"
## [163] "small" "small" "small" "large" "small" "small" "large" "small" "small"
## [172] "small" "large" "small" "small" "small" "small" "small" "small" "small"
## [181] "large" "small" "small" "large" "small" "large" "small" "small" "small"
## [190] "small" "small" "small" "small" "small" "small" "small" "small" "small"
## [199] "small" "small" "small" "small" "small" "small" "large" "small" "large"
## [208] "small" "small" "small" "small" "small" "small" "small" "small" "small"
## [217] "large" "small" "large" "small" "small" "large" "small" "small" "large"
## [226] "small" "large" "small" "large" "small" "large" "small" "large" "small"
## [235] "large" "small" "small" "small" "small" "large" "small" "small" "small"
## [244] "large" "small" "large" "small" "large" "small" "large" "small" "small"
## [253] "small" "small" "small" "small" "large" "small" "small" "small" "small"
## [262] "small" "small" "large" "small" "small" "large" "small" "small" "small"
## [271] "small" "small" "small" "small" "large" "large" "small" "small" "large"
## [280] "large" "small" "large" "small" "small" "small" "large" "small" "small"
## [289] "small" "small" "small" "small" "small" "small" "large" "small" "small"
## [298] "large" "small" "small" "small" "large" "small" "small" "small" "large"
## [307] "small" "large" "large" "small" "small" "small" "small" "small" "small"
## [316] "small" "small" "small" "small" "large" "small" "small" "large" "large"
## [325] "large" "small" "small" "small" "large" "small" "small" "large" "small"
## [334] "large" "small" "small" "small" "small" "small" "small" "small" "small"
## [343] "small" "large" "small" "small" "small" "small" "small" "small" "small"
## [352] "large" "small" "large" "small" "small" "small" "small" "small" "large"
## [361] "small" "large" "small" "large" "small" "small" "small" "small" "small"
## [370] "large" "small" "small" "large" "large" "small" "small" "small" "large"
## [379] "small" "small" "large" "large" "large" "small" "large" "small" "small"
## [388] "small" "large" "small" "small" "small" "small" "small" "large" "small"
## [397] "large" "small" "small" "small" "large" "large" "small" "small" "small"
## [406] "large" "small" "small" "small" "large" "large" "small" "large" "small"
## [415] "large" "small" "large" "small" "large" "large" "small" "small" "small"
## [424] "small" "large" "small" "small" "small" "small" "large" "small" "small"
## [433] "large" "small" "small" "large" "large"

Q5. “large”와 “small”에 해당하는 지역이 얼마나 되는지, 빈도표와 빈도 막대 그래프를 만들어 확인해 보세요.

table(midwest$ratio_if)

large small 
  119   318 
qplot(midwest$ratio_if)

3. 엑셀파일 불러들여 데이터 살펴보고 과제 수행하기

지난 시간에 엑셀파일을 불러들여오는 명령어를 배웠는데, 이번에는 주어진 엑셀파일 (mlu.xls)를 그 명령어를 이용해서 불러들인다음 오늘 배운 내용들을 수행해봅니다. 데이터는 엑셀파일의 두번째 sheet 에 있으므로 명령어를 잘 활용하여 불러들이기 바랍니다.

Q1. 데이터를 불러들여 mlu_data로 저장한 다음 카피본을 만든다.

mlu.data <- read_excel("e:/R_Project/연습/mlu.xls",sheet=2)
mlu.data2 = mlu.data

Q2. age 칼럼에는 몇개의 요인이 있는가?

table(mlu.data2$age)
## 
## A0 A1 A2 
## 12 11 12

Q3. utterances_mlu를 utterances로 words_mlu를 words로 이름을 바꾸라.

mlu.data2 <- rename(mlu.data2,utterances=utterances_mlu)
mlu.data2 <- rename(mlu.data2,words=words_mlu)

Q4. 각 utterance 에 평균 몇개의 단어가 들어있는지를 계산해서 mlu라는 파생변수를 생성하라. (칼럼을 새로 추가하라는 말)

mlu.data2$mlu <- mlu.data2$words/mlu.data2$utterances
mlu.data2$mlu
##  [1] 2.279152 2.835398 1.729787 2.630728 2.791771 2.207815 2.970383 2.059369
##  [9] 2.619858 2.819149 2.900474 2.131092 3.028623 2.745407 2.357259 2.428571
## [17] 2.661836 2.402985 2.692402 2.639798 2.541573 2.804412 2.209559 3.476091
## [25] 2.932133 3.025510 2.755418 3.184507 2.687273 2.814748 2.465517 2.849296
## [33] 2.980741 3.353873 3.340580

Q5. summary 명령을 이용하여 mlu 의 평균및 quartile 값을 파악하라.

 summary(mlu.data2$mlu)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.730   2.447   2.745   2.696   2.916   3.476

Q6.mlu값을 4개의 등급으로 나누어 가장 문장 길이가 긴 그룹을 A, 그 다음 순서대로 B, C, D로 구분하여 파생변수 grade 칼럼을 생성하라.

mlu.data2$grade <- ifelse(mlu.data2$mlu > 2.916,"A",
                   ifelse(mlu.data2$mlu > 2.696,"B",
                   ifelse(mlu.data2$mlu > 2.447,"C","D")))
mlu.data2$grade
##  [1] "D" "B" "D" "C" "B" "D" "A" "D" "C" "B" "B" "D" "A" "B" "D" "D" "C" "D" "C"
## [20] "C" "C" "B" "D" "A" "A" "A" "B" "A" "C" "B" "C" "B" "A" "A" "A"

Q7. age와 mlu 사이의 빈도분포를 table 명령어를 이용하여 구하라.

table(mlu.data2$age)
## 
## A0 A1 A2 
## 12 11 12
table(mlu.data2$mlu)
## 
## 1.72978723404255 2.05936920222635 2.13109243697479 2.20781527531083 
##                1                1                1                1 
## 2.20955882352941  2.2791519434629 2.35725938009788 2.40298507462687 
##                1                1                1                1 
## 2.42857142857143 2.46551724137931 2.54157303370787 2.61985815602837 
##                1                1                1                1 
## 2.63072776280323 2.63979848866499 2.66183574879227 2.68727272727273 
##                1                1                1                1 
## 2.69240196078431 2.74540682414698 2.75541795665635 2.79177057356608 
##                1                1                1                1 
## 2.80441176470588 2.81474820143885 2.81914893617021  2.8353982300885 
##                1                1                1                1 
## 2.84929577464789 2.90047393364929 2.93213296398892 2.97038327526132 
##                1                1                1                1 
## 2.98074074074074 3.02551020408163 3.02862254025045 3.18450704225352 
##                1                1                1                1 
## 3.34057971014493 3.35387323943662 3.47609147609148 
##                1                1                1

Q8.qplot을 이용하여 각 나이 그룹을 x 축으로 하여 mlu 값의 분포를 그래프로 그려라.

qplot(data=mlu.data2,x=age,y=mlu)