> score
m f
[1,] 10 21
[2,] 40 60
[3,] 60 70
[4,] 20 30
score <- matrix(c(10,40,60,20,21,60,70,30),nrow = 4,ncol = 2)
colnames(score) <- c("m","f")
score
## m f
## [1,] 10 21
## [2,] 40 60
## [3,] 60 70
## [4,] 20 30
colnames(score) <- c("male","female")
score
## male female
## [1,] 10 21
## [2,] 40 60
## [3,] 60 70
## [4,] 20 30
score[2,]
## male female
## 40 60
score[,"female"]
## [1] 21 60 70 30
subset(score,select = "female")
## female
## [1,] 21
## [2,] 60
## [3,] 70
## [4,] 30
score[3,2]
## female
## 70
st <- as.data.frame(state.x77)
head(st)
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alabama 3615 3624 2.1 69.05 15.1 41.3 20 50708
## Alaska 365 6315 1.5 69.31 11.3 66.7 152 566432
## Arizona 2212 4530 1.8 70.55 7.8 58.1 15 113417
## Arkansas 2110 3378 1.9 70.66 10.1 39.9 65 51945
## 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
colnames(st)
## [1] "Population" "Income" "Illiteracy" "Life Exp" "Murder" "HS Grad" "Frost"
## [8] "Area"
rownames(st)
## [1] "Alabama" "Alaska" "Arizona" "Arkansas" "California"
## [6] "Colorado" "Connecticut" "Delaware" "Florida" "Georgia"
## [11] "Hawaii" "Idaho" "Illinois" "Indiana" "Iowa"
## [16] "Kansas" "Kentucky" "Louisiana" "Maine" "Maryland"
## [21] "Massachusetts" "Michigan" "Minnesota" "Mississippi" "Missouri"
## [26] "Montana" "Nebraska" "Nevada" "New Hampshire" "New Jersey"
## [31] "New Mexico" "New York" "North Carolina" "North Dakota" "Ohio"
## [36] "Oklahoma" "Oregon" "Pennsylvania" "Rhode Island" "South Carolina"
## [41] "South Dakota" "Tennessee" "Texas" "Utah" "Vermont"
## [46] "Virginia" "Washington" "West Virginia" "Wisconsin" "Wyoming"
# 행의 갯수를 구하는 R code를 입력하시오
nrow(st)
## [1] 50
# 열의 갯수를 구하는 R code를 입력하시오
ncol(st)
## [1] 8
# 행과 열의 갯수를 구하는 R code를 입력하시오
dim(st)
## [1] 50 8
str(st)
## 'data.frame': 50 obs. of 8 variables:
## $ Population: num 3615 365 2212 2110 21198 ...
## $ Income : num 3624 6315 4530 3378 5114 ...
## $ Illiteracy: num 2.1 1.5 1.8 1.9 1.1 0.7 1.1 0.9 1.3 2 ...
## $ Life Exp : num 69 69.3 70.5 70.7 71.7 ...
## $ Murder : num 15.1 11.3 7.8 10.1 10.3 6.8 3.1 6.2 10.7 13.9 ...
## $ HS Grad : num 41.3 66.7 58.1 39.9 62.6 63.9 56 54.6 52.6 40.6 ...
## $ Frost : num 20 152 15 65 20 166 139 103 11 60 ...
## $ Area : num 50708 566432 113417 51945 156361 ...
# 행별 합계를 구하는 R code를 입력하시오
rowSums(st)
## Alabama Alaska Arizona Arkansas California Colorado
## 58094.55 573412.81 120312.25 57620.56 182838.71 111500.46
## Connecticut Delaware Florida Georgia Hawaii Idaho
## 13581.68 7604.76 67328.26 67280.04 12399.60 87872.27
## Illinois Indiana Iowa Kansas Kentucky Louisiana
## 72312.94 46121.58 63704.36 88987.58 46964.80 52419.96
## Maine Maryland Massachusetts Michigan Minnesota Mississippi
## 35961.49 19544.92 18632.73 70939.43 88178.46 52908.99
## Missouri Montana Nebraska Nevada New Hampshire New Jersey
## 78253.59 150970.36 82809.40 115962.23 14426.83 20335.73
## New Mexico New York North Carolina North Dakota Ohio Oklahoma
## 126414.42 71027.55 58314.61 75308.28 56527.22 75692.52
## Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee
## 103308.93 61528.73 6787.00 36860.66 81102.58 49516.61
## Texas Utah Vermont Virginia Washington West Virginia
## 278726.70 87603.30 13948.84 49675.78 75165.12 29705.18
## Wisconsin Wyoming
## 63800.68 102458.69
# 행의 평균을 구하는 R code를 입력하시오
rowMeans(st)
## Alabama Alaska Arizona Arkansas California Colorado
## 7261.819 71676.601 15039.031 7202.570 22854.839 13937.558
## Connecticut Delaware Florida Georgia Hawaii Idaho
## 1697.710 950.595 8416.032 8410.005 1549.950 10984.034
## Illinois Indiana Iowa Kansas Kentucky Louisiana
## 9039.118 5765.198 7963.045 11123.448 5870.600 6552.495
## Maine Maryland Massachusetts Michigan Minnesota Mississippi
## 4495.186 2443.115 2329.091 8867.429 11022.308 6613.624
## Missouri Montana Nebraska Nevada New Hampshire New Jersey
## 9781.699 18871.295 10351.175 14495.279 1803.354 2541.966
## New Mexico New York North Carolina North Dakota Ohio Oklahoma
## 15801.802 8878.444 7289.326 9413.535 7065.903 9461.565
## Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee
## 12913.616 7691.091 848.375 4607.583 10137.823 6189.576
## Texas Utah Vermont Virginia Washington West Virginia
## 34840.838 10950.413 1743.605 6209.472 9395.640 3713.148
## Wisconsin Wyoming
## 7975.085 12807.336
# 열별 합계를 출력하시오
colSums(st)
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## 212321.00 221790.00 58.50 3543.93 368.90 2655.40 5223.00 3536794.00
# 열별 평균을 출력하시오
colMeans(st)
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## 4246.4200 4435.8000 1.1700 70.8786 7.3780 53.1080 104.4600 70735.8800
st["Florida",]
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Florida 8277 4815 1.3 70.66 10.7 52.6 11 54090
st[,"Income"] # 값이 출력
## [1] 3624 6315 4530 3378 5114 4884 5348 4809 4815 4091 4963 4119 5107 4458 4628 4669 3712 3545 3694
## [20] 5299 4755 4751 4675 3098 4254 4347 4508 5149 4281 5237 3601 4903 3875 5087 4561 3983 4660 4449
## [39] 4558 3635 4167 3821 4188 4022 3907 4701 4864 3617 4468 4566
17 50개 주의 이름과 함께 수입 정보를 출력하시오. 그리고 16번 결과와 비교하시오.
subset(st, select="Income") # 값이 아닌 데이터프레임으로 출력
## Income
## Alabama 3624
## Alaska 6315
## Arizona 4530
## Arkansas 3378
## California 5114
## Colorado 4884
## Connecticut 5348
## Delaware 4809
## Florida 4815
## Georgia 4091
## Hawaii 4963
## Idaho 4119
## Illinois 5107
## Indiana 4458
## Iowa 4628
## Kansas 4669
## Kentucky 3712
## Louisiana 3545
## Maine 3694
## Maryland 5299
## Massachusetts 4755
## Michigan 4751
## Minnesota 4675
## Mississippi 3098
## Missouri 4254
## Montana 4347
## Nebraska 4508
## Nevada 5149
## New Hampshire 4281
## New Jersey 5237
## New Mexico 3601
## New York 4903
## North Carolina 3875
## North Dakota 5087
## Ohio 4561
## Oklahoma 3983
## Oregon 4660
## Pennsylvania 4449
## Rhode Island 4558
## South Carolina 3635
## South Dakota 4167
## Tennessee 3821
## Texas 4188
## Utah 4022
## Vermont 3907
## Virginia 4701
## Washington 4864
## West Virginia 3617
## Wisconsin 4468
## Wyoming 4566
st["Texas","Area"]
## [1] 262134
st["Ohio",c("Population","Income")]
## Population Income
## Ohio 10735 4561
# 답변에 해당하는 R code를 subset() 함수 혹은 boolean indexing을 이용하여 출력하시오.
subset(st, Population>=5000)
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## 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
## 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
## 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
## New Jersey 7333 5237 1.1 70.93 5.2 52.5 115 7521
## 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
## 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
# 답변에 해당하는 R code를 subset() 함수를 이용하여 출력하시오.
# subset() 함수 사용법은 help("subset") 혹은 ?subset을 console에 입력하여 확인하시오.
subset(st, Income>=4500, select = c(Population,Income,Area))
## Population Income Area
## Alaska 365 6315 566432
## Arizona 2212 4530 113417
## California 21198 5114 156361
## Colorado 2541 4884 103766
## Connecticut 3100 5348 4862
## Delaware 579 4809 1982
## Florida 8277 4815 54090
## Hawaii 868 4963 6425
## Illinois 11197 5107 55748
## Iowa 2861 4628 55941
## Kansas 2280 4669 81787
## Maryland 4122 5299 9891
## Massachusetts 5814 4755 7826
## Michigan 9111 4751 56817
## Minnesota 3921 4675 79289
## Nebraska 1544 4508 76483
## Nevada 590 5149 109889
## New Jersey 7333 5237 7521
## New York 18076 4903 47831
## North Dakota 637 5087 69273
## Ohio 10735 4561 40975
## Oregon 2284 4660 96184
## Rhode Island 931 4558 1049
## Virginia 4981 4701 39780
## Washington 3559 4864 66570
## Wyoming 376 4566 97203
nrow(subset(st,Income>=4500))
## [1] 26
subset(st, Area>=100000&Frost>=120)
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alaska 365 6315 1.5 69.31 11.3 66.7 152 566432
## Colorado 2541 4884 0.7 72.06 6.8 63.9 166 103766
## Montana 746 4347 0.6 70.56 5.0 59.2 155 145587
## Nevada 590 5149 0.5 69.03 11.5 65.2 188 109889
## New Mexico 1144 3601 2.2 70.32 9.7 55.2 120 121412
subset(st,Population<2000&Murder<12)
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alaska 365 6315 1.5 69.31 11.3 66.7 152 566432
## Delaware 579 4809 0.9 70.06 6.2 54.6 103 1982
## 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
## Maine 1058 3694 0.7 70.39 2.7 54.7 161 30920
## 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 Mexico 1144 3601 2.2 70.32 9.7 55.2 120 121412
## North Dakota 637 5087 0.8 72.78 1.4 50.3 186 69273
## Rhode Island 931 4558 1.3 71.90 2.4 46.4 127 1049
## South Dakota 681 4167 0.5 72.08 1.7 53.3 172 75955
## 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
## West Virginia 1799 3617 1.4 69.48 6.7 41.6 100 24070
## Wyoming 376 4566 0.6 70.29 6.9 62.9 173 97203
mean(st[st$Illiteracy>=2.0,"Income"]) # 값을 가지고 평균을 계산하므로 열명 없이 출력된다.
## [1] 3683.143
# 답변에 해당하는 R code와 설명을 #와 함께 입력하시오
colMeans(subset(st,Illiteracy>=2.0,select = Income)) # 데이터 프레임을 가지고 열의 평균을 계산하므로 열명과 함께 출력된다.
## Income
## 3683.143
abs(mean(st[st$Illiteracy<2.0,"Income"])-mean(st[st$Illiteracy>=2.0,"Income"]))
## [1] 875.1827
row.names(st[which.max(st$`Life Exp`),]) # row.names(st)[which.max(st$`Life Exp`)]
## [1] "Hawaii"
subset(st, st["Pennsylvania","Income"]<st$Income)
## Population Income Illiteracy Life Exp Murder HS Grad Frost Area
## Alaska 365 6315 1.5 69.31 11.3 66.7 152 566432
## 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
## 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
## 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
## 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
## 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
## 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 Jersey 7333 5237 1.1 70.93 5.2 52.5 115 7521
## New York 18076 4903 1.4 70.55 10.9 52.7 82 47831
## 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
## 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
## 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
## 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
class(mtcars)
## [1] "data.frame"
dim(mtcars)
## [1] 32 11
str(mtcars)
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
# R 스튜디오의 오른쪽 하단의 help 탭에 mtcars를 입력하여 나온 정보를 붙여넣는다.
# [, 1] mpg Miles/(US) gallon
# [, 2] cyl Number of cylinders
# [, 3] disp Displacement (cu.in.)
# [, 4] hp Gross horsepower
# [, 5] drat Rear axle ratio
# [, 6] wt Weight (1000 lbs)
# [, 7] qsec 1/4 mile time
# [, 8] vs Engine (0 = V-shaped, 1 = straight)
# [, 9] am Transmission (0 = automatic, 1 = manual)
# [,10] gear Number of forward gears
# [,11] carb Number of carburetors
row.names(mtcars[which.max(mtcars$mpg),])
## [1] "Toyota Corolla"
sub.mtcars <- subset(mtcars,mtcars$gear==4)
sub.mtcars[which.min(sub.mtcars$mpg),]
## mpg cyl disp hp drat wt qsec vs am gear carb
## Merc 280C 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4
mtcars["Honda Civic",c("mpg","gear")]
## mpg gear
## Honda Civic 30.4 4
subset(mtcars, mtcars["Pontiac Firebird","mpg"]<mtcars$mpg)
## 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
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 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
## 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
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
mean(mtcars$mpg)
## [1] 20.09062
colMeans(subset(mtcars,select = "mpg")) # 데이터프레임을 가지고 열평균을 출력하므로 열명과 함께 출력된다.
## mpg
## 20.09062
unique(mtcars$gear)
## [1] 4 3 5
class(airquality)
## [1] "data.frame"
head(airquality)
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
airquality[which.max(airquality$Temp),c("Month","Day")]
## Month Day
## 120 8 28
sub.airquality <- subset(airquality, Month==6, select = Wind)
sub.airquality[which.max(sub.airquality$Wind),]
## [1] 20.7
colMeans(subset(airquality, Month==7, select = Temp))
## Temp
## 83.90323
colMeans(subset(airquality, Month==5 & !is.na(airquality$Ozone), select = Ozone))
## Ozone
## 23.61538
nrow(airquality[airquality$Ozone>100 & !is.na(airquality$Ozone),])
## [1] 7
class(swiss)
## [1] "data.frame"
str(swiss)
## 'data.frame': 47 obs. of 6 variables:
## $ Fertility : num 80.2 83.1 92.5 85.8 76.9 76.1 83.8 92.4 82.4 82.9 ...
## $ Agriculture : num 17 45.1 39.7 36.5 43.5 35.3 70.2 67.8 53.3 45.2 ...
## $ Examination : int 15 6 5 12 17 9 16 14 12 16 ...
## $ Education : int 12 9 5 7 15 7 7 8 7 13 ...
## $ Catholic : num 9.96 84.84 93.4 33.77 5.16 ...
## $ Infant.Mortality: num 22.2 22.2 20.2 20.3 20.6 26.6 23.6 24.9 21 24.4 ...
# help을 통해 각 열의 의미를 확인하시오.
# [,1] Fertility Ig, ‘common standardized fertility measure’
# [,2] Agriculture % of males involved in agriculture as occupation
# [,3] Examination % draftees receiving highest mark on army examination
# [,4] Education % education beyond primary school for draftees.
# [,5] Catholic % ‘catholic’ (as opposed to ‘protestant’).
# [,6] Infant.Mortality live births who live less than 1 year.
# All variables but ‘Fertility’ give proportions of the population.
row.names(swiss[which.max(swiss$Agriculture),])
## [1] "Herens"
sub.swiss <- swiss[order(swiss$Agriculture, decreasing = TRUE),]
subset(sub.swiss, select= Agriculture)
## Agriculture
## Herens 89.7
## Conthey 85.9
## Entremont 84.9
## Sierre 84.6
## Martigwy 78.2
## St Maurice 75.9
## Lavaux 73.0
## Echallens 72.6
## Oron 71.2
## Broye 70.2
## Cossonay 69.3
## Glane 67.8
## Aubonne 67.5
## Monthey 64.9
## Veveyse 64.5
## Paysd'enhaut 63.5
## Sion 63.1
## Aigle 62.0
## Rolle 60.8
## Avenches 60.7
## Morges 59.8
## Payerne 58.1
## Moudon 55.1
## Orbe 54.1
## Gruyere 53.3
## Nyone 50.9
## Yverdon 49.5
## Rive Droite 46.6
## Sarine 45.2
## Delemont 45.1
## Neuveville 43.5
## Franches-Mnt 39.7
## Boudry 38.4
## Val de Ruz 37.6
## Moutier 36.5
## Porrentruy 35.3
## Grandson 34.0
## Rive Gauche 27.7
## Vevey 26.8
## Lausanne 19.4
## ValdeTravers 18.7
## Neuchatel 17.6
## Courtelary 17.0
## Le Locle 16.7
## La Vallee 15.2
## La Chauxdfnd 7.7
## V. De Geneve 1.2
subset(swiss, Catholic>=80, select = Agriculture)
## Agriculture
## Delemont 45.1
## Franches-Mnt 39.7
## Porrentruy 35.3
## Broye 70.2
## Glane 67.8
## Gruyere 53.3
## Sarine 45.2
## Veveyse 64.5
## Conthey 85.9
## Entremont 84.9
## Herens 89.7
## Martigwy 78.2
## Monthey 64.9
## St Maurice 75.9
## Sierre 84.6
## Sion 63.1
subset(swiss, Examination<20 & Agriculture<50, select = c(Examination, Agriculture))
## Examination Agriculture
## Courtelary 15 17.0
## Delemont 6 45.1
## Franches-Mnt 5 39.7
## Moutier 12 36.5
## Neuveville 17 43.5
## Porrentruy 9 35.3
## Sarine 16 45.2
## Grandson 17 34.0
## Yverdon 15 49.5
## Val de Ruz 15 37.6
## Rive Droite 16 46.6