lst <- list(1:12)
mtx <- matrix(1:12,nrow=4)
df <- data.frame(x=1:4,y=5:8,z=9:12)
# R code와 설명을 #와 함께 입력하시오
lst <- list(1:12)
length(lst) # 리스트의 길이
## [1] 1
mtx <- matrix(1:12,nrow=4)
length(mtx) # 행렬의 길이
## [1] 12
df <- data.frame(x=1:4,y=5:8,z=9:12)
length(df) # 데이터 프레임의 길이
## [1] 3
mtcars[1:4]
mtcars[,1:4]
mtcars[-c(5,6,7,8,9,10,11)]
mtcars[c("mpg","cyl","disp","hp")]
mtcars[-5:11] # 실행결과 다름!
mtcars[1:4]
## mpg cyl disp hp
## Mazda RX4 21.0 6 160.0 110
## Mazda RX4 Wag 21.0 6 160.0 110
## Datsun 710 22.8 4 108.0 93
## Hornet 4 Drive 21.4 6 258.0 110
## Hornet Sportabout 18.7 8 360.0 175
## Valiant 18.1 6 225.0 105
## Duster 360 14.3 8 360.0 245
## Merc 240D 24.4 4 146.7 62
## Merc 230 22.8 4 140.8 95
## Merc 280 19.2 6 167.6 123
## Merc 280C 17.8 6 167.6 123
## Merc 450SE 16.4 8 275.8 180
## Merc 450SL 17.3 8 275.8 180
## Merc 450SLC 15.2 8 275.8 180
## Cadillac Fleetwood 10.4 8 472.0 205
## Lincoln Continental 10.4 8 460.0 215
## Chrysler Imperial 14.7 8 440.0 230
## Fiat 128 32.4 4 78.7 66
## Honda Civic 30.4 4 75.7 52
## Toyota Corolla 33.9 4 71.1 65
## Toyota Corona 21.5 4 120.1 97
## Dodge Challenger 15.5 8 318.0 150
## AMC Javelin 15.2 8 304.0 150
## Camaro Z28 13.3 8 350.0 245
## Pontiac Firebird 19.2 8 400.0 175
## Fiat X1-9 27.3 4 79.0 66
## Porsche 914-2 26.0 4 120.3 91
## Lotus Europa 30.4 4 95.1 113
## Ford Pantera L 15.8 8 351.0 264
## Ferrari Dino 19.7 6 145.0 175
## Maserati Bora 15.0 8 301.0 335
## Volvo 142E 21.4 4 121.0 109
mtcars[,1:4]
## mpg cyl disp hp
## Mazda RX4 21.0 6 160.0 110
## Mazda RX4 Wag 21.0 6 160.0 110
## Datsun 710 22.8 4 108.0 93
## Hornet 4 Drive 21.4 6 258.0 110
## Hornet Sportabout 18.7 8 360.0 175
## Valiant 18.1 6 225.0 105
## Duster 360 14.3 8 360.0 245
## Merc 240D 24.4 4 146.7 62
## Merc 230 22.8 4 140.8 95
## Merc 280 19.2 6 167.6 123
## Merc 280C 17.8 6 167.6 123
## Merc 450SE 16.4 8 275.8 180
## Merc 450SL 17.3 8 275.8 180
## Merc 450SLC 15.2 8 275.8 180
## Cadillac Fleetwood 10.4 8 472.0 205
## Lincoln Continental 10.4 8 460.0 215
## Chrysler Imperial 14.7 8 440.0 230
## Fiat 128 32.4 4 78.7 66
## Honda Civic 30.4 4 75.7 52
## Toyota Corolla 33.9 4 71.1 65
## Toyota Corona 21.5 4 120.1 97
## Dodge Challenger 15.5 8 318.0 150
## AMC Javelin 15.2 8 304.0 150
## Camaro Z28 13.3 8 350.0 245
## Pontiac Firebird 19.2 8 400.0 175
## Fiat X1-9 27.3 4 79.0 66
## Porsche 914-2 26.0 4 120.3 91
## Lotus Europa 30.4 4 95.1 113
## Ford Pantera L 15.8 8 351.0 264
## Ferrari Dino 19.7 6 145.0 175
## Maserati Bora 15.0 8 301.0 335
## Volvo 142E 21.4 4 121.0 109
mtcars[-c(5,6,7,8,9,10,11)]
## mpg cyl disp hp
## Mazda RX4 21.0 6 160.0 110
## Mazda RX4 Wag 21.0 6 160.0 110
## Datsun 710 22.8 4 108.0 93
## Hornet 4 Drive 21.4 6 258.0 110
## Hornet Sportabout 18.7 8 360.0 175
## Valiant 18.1 6 225.0 105
## Duster 360 14.3 8 360.0 245
## Merc 240D 24.4 4 146.7 62
## Merc 230 22.8 4 140.8 95
## Merc 280 19.2 6 167.6 123
## Merc 280C 17.8 6 167.6 123
## Merc 450SE 16.4 8 275.8 180
## Merc 450SL 17.3 8 275.8 180
## Merc 450SLC 15.2 8 275.8 180
## Cadillac Fleetwood 10.4 8 472.0 205
## Lincoln Continental 10.4 8 460.0 215
## Chrysler Imperial 14.7 8 440.0 230
## Fiat 128 32.4 4 78.7 66
## Honda Civic 30.4 4 75.7 52
## Toyota Corolla 33.9 4 71.1 65
## Toyota Corona 21.5 4 120.1 97
## Dodge Challenger 15.5 8 318.0 150
## AMC Javelin 15.2 8 304.0 150
## Camaro Z28 13.3 8 350.0 245
## Pontiac Firebird 19.2 8 400.0 175
## Fiat X1-9 27.3 4 79.0 66
## Porsche 914-2 26.0 4 120.3 91
## Lotus Europa 30.4 4 95.1 113
## Ford Pantera L 15.8 8 351.0 264
## Ferrari Dino 19.7 6 145.0 175
## Maserati Bora 15.0 8 301.0 335
## Volvo 142E 21.4 4 121.0 109
mtcars[c("mpg","cyl","disp","hp")]
## mpg cyl disp hp
## Mazda RX4 21.0 6 160.0 110
## Mazda RX4 Wag 21.0 6 160.0 110
## Datsun 710 22.8 4 108.0 93
## Hornet 4 Drive 21.4 6 258.0 110
## Hornet Sportabout 18.7 8 360.0 175
## Valiant 18.1 6 225.0 105
## Duster 360 14.3 8 360.0 245
## Merc 240D 24.4 4 146.7 62
## Merc 230 22.8 4 140.8 95
## Merc 280 19.2 6 167.6 123
## Merc 280C 17.8 6 167.6 123
## Merc 450SE 16.4 8 275.8 180
## Merc 450SL 17.3 8 275.8 180
## Merc 450SLC 15.2 8 275.8 180
## Cadillac Fleetwood 10.4 8 472.0 205
## Lincoln Continental 10.4 8 460.0 215
## Chrysler Imperial 14.7 8 440.0 230
## Fiat 128 32.4 4 78.7 66
## Honda Civic 30.4 4 75.7 52
## Toyota Corolla 33.9 4 71.1 65
## Toyota Corona 21.5 4 120.1 97
## Dodge Challenger 15.5 8 318.0 150
## AMC Javelin 15.2 8 304.0 150
## Camaro Z28 13.3 8 350.0 245
## Pontiac Firebird 19.2 8 400.0 175
## Fiat X1-9 27.3 4 79.0 66
## Porsche 914-2 26.0 4 120.3 91
## Lotus Europa 30.4 4 95.1 113
## Ford Pantera L 15.8 8 351.0 264
## Ferrari Dino 19.7 6 145.0 175
## Maserati Bora 15.0 8 301.0 335
## Volvo 142E 21.4 4 121.0 109
# mtcars[-5:11] # Error
name <- c("Potter", "Elsa", "Gates", "Wendy", "Ben")
gender <- factor(c("F", "M", "F", "M", "F"))
math <- c(85, 76, 99, 88, 67)
name <- c("Potter", "Elsa", "Gates", "Wendy", "Ben")
gender <- factor(c("F", "M", "F", "M", "F"))
math <- c(85, 76, 99, 88, 67)
df <- data.frame(name,gender,math) # 데이터 프레임 생성
df
## name gender math
## 1 Potter F 85
## 2 Elsa M 76
## 3 Gates F 99
## 4 Wendy M 88
## 5 Ben F 67
df$gender
## [1] F M F M F
## Levels: F M
levels(df$gender) <- c('M','F') # gender 변수의 값(level 숫자 값)을 반대 성별로 변경
df$gender
## [1] M F M F M
## Levels: M F
is.character(name)
## [1] TRUE
is.factor(gender)
## [1] TRUE
is.numeric(math)
## [1] TRUE
stat <- c(76,73,95,82,55)
# (a) stat변수를 데이터프레밈 df에 추가하시오.
stat <- c(76,73,95,82,55)
df <- cbind(df, stat)
df
## name gender math stat
## 1 Potter M 85 76
## 2 Elsa F 76 73
## 3 Gates M 99 95
## 4 Wendy F 88 82
## 5 Ben M 67 55
# (b) math 변수와 stat변수의 평균을 구하여 df내 score변수로 저장하시오
df$score <- round(rowMeans(df[3:4]),1)
df
## name gender math stat score
## 1 Potter M 85 76 80.5
## 2 Elsa F 76 73 74.5
## 3 Gates M 99 95 97.0
## 4 Wendy F 88 82 85.0
## 5 Ben M 67 55 61.0
# (c) score가 90이상이면 A, 80이상 90미만이면 B, 70이상 80미만이면 C, 70미만이면 D로 등급을 부여하고 grade 변수에 저장하시오.
df$grade[df$score >= 90] <- "A"
df$grade[df$score>=80 & df$score<90] <- "B"
df$grade[df$score>=70 & df$score<80] <- "C"
df$grade[df$score<70] <- "D"
df
## name gender math stat score grade
## 1 Potter M 85 76 80.5 B
## 2 Elsa F 76 73 74.5 C
## 3 Gates M 99 95 97.0 A
## 4 Wendy F 88 82 85.0 B
## 5 Ben M 67 55 61.0 D
# (d) grade변수를 서열 팩터로 변환하시오
df$grade
## [1] "B" "C" "A" "B" "D"
df$grade <- factor(df$grade)
df$grade
## [1] B C A B D
## Levels: A B C D
str(iris)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
iris.new <- data.frame(iris[,1:4])
head(iris.new)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3.0 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## 4 4.6 3.1 1.5 0.2
## 5 5.0 3.6 1.4 0.2
## 6 5.4 3.9 1.7 0.4
colMeans(iris.new)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 5.843333 3.057333 3.758000 1.199333
# (a) 두 데이터셋의 데이터 구조를 확인하고 id 변수를 추가하여 beaver1 데이터셋에 대해서는 1을 저장하고 beaver2 데이터셋에 대해서는 2를 저장하시오.
str(beaver1)
## 'data.frame': 114 obs. of 4 variables:
## $ day : num 346 346 346 346 346 346 346 346 346 346 ...
## $ time : num 840 850 900 910 920 930 940 950 1000 1010 ...
## $ temp : num 36.3 36.3 36.4 36.4 36.5 ...
## $ activ: num 0 0 0 0 0 0 0 0 0 0 ...
str(beaver2)
## 'data.frame': 100 obs. of 4 variables:
## $ day : num 307 307 307 307 307 307 307 307 307 307 ...
## $ time : num 930 940 950 1000 1010 1020 1030 1040 1050 1100 ...
## $ temp : num 36.6 36.7 36.9 37.1 37.2 ...
## $ activ: num 0 0 0 0 0 0 0 0 0 0 ...
beaver1$id <- 1
head(beaver1)
## day time temp activ id
## 1 346 840 36.33 0 1
## 2 346 850 36.34 0 1
## 3 346 900 36.35 0 1
## 4 346 910 36.42 0 1
## 5 346 920 36.55 0 1
## 6 346 930 36.69 0 1
beaver2$id <- 2
head(beaver2)
## day time temp activ id
## 1 307 930 36.58 0 2
## 2 307 940 36.73 0 2
## 3 307 950 36.93 0 2
## 4 307 1000 37.15 0 2
## 5 307 1010 37.23 0 2
## 6 307 1020 37.24 0 2
# (b) 두 데이터셋을 행의 방향으로 결합하여 새로운 데이터프레임 beaver12를 생성하고 id변수가 첫번째 열에 위치하도록 열의 순서를 조정하시오.
beaver12 <- rbind(beaver1, beaver2)
beaver12 <- beaver12[,c(5, 1:4)]
head(beaver12)
## id day time temp activ
## 1 1 346 840 36.33 0
## 2 1 346 850 36.34 0
## 3 1 346 900 36.35 0
## 4 1 346 910 36.42 0
## 5 1 346 920 36.55 0
## 6 1 346 930 36.69 0
# (c) 새로운 데이터프레임 beaver12에서 'active' 상태(activ 변수값이 1)인 비버들의 서브셋(subset)을 추출하시오.
subset(beaver12,beaver12$activ==1)
## id day time temp activ
## 54 1 346 1730 37.07 1
## 68 1 346 1950 37.10 1
## 80 1 346 2150 37.53 1
## 83 1 346 2230 37.25 1
## 86 1 346 2300 37.24 1
## 114 1 347 340 37.15 1
## 153 2 307 1550 37.98 1
## 154 2 307 1600 38.02 1
## 155 2 307 1610 38.00 1
## 156 2 307 1620 38.24 1
## 157 2 307 1630 38.10 1
## 158 2 307 1640 38.24 1
## 159 2 307 1650 38.11 1
## 160 2 307 1700 38.02 1
## 161 2 307 1710 38.11 1
## 162 2 307 1720 38.01 1
## 163 2 307 1730 37.91 1
## 164 2 307 1740 37.96 1
## 165 2 307 1750 38.03 1
## 166 2 307 1800 38.17 1
## 167 2 307 1810 38.19 1
## 168 2 307 1820 38.18 1
## 169 2 307 1830 38.15 1
## 170 2 307 1840 38.04 1
## 171 2 307 1850 37.96 1
## 172 2 307 1900 37.84 1
## 173 2 307 1910 37.83 1
## 174 2 307 1920 37.84 1
## 175 2 307 1930 37.74 1
## 176 2 307 1940 37.76 1
## 177 2 307 1950 37.76 1
## 178 2 307 2000 37.64 1
## 179 2 307 2010 37.63 1
## 180 2 307 2020 38.06 1
## 181 2 307 2030 38.19 1
## 182 2 307 2040 38.35 1
## 183 2 307 2050 38.25 1
## 184 2 307 2100 37.86 1
## 185 2 307 2110 37.95 1
## 186 2 307 2120 37.95 1
## 187 2 307 2130 37.76 1
## 188 2 307 2140 37.60 1
## 189 2 307 2150 37.89 1
## 190 2 307 2200 37.86 1
## 191 2 307 2210 37.71 1
## 192 2 307 2220 37.78 1
## 193 2 307 2230 37.82 1
## 194 2 307 2240 37.76 1
## 195 2 307 2250 37.81 1
## 196 2 307 2300 37.84 1
## 197 2 307 2310 38.01 1
## 198 2 307 2320 38.10 1
## 199 2 307 2330 38.15 1
## 200 2 307 2340 37.92 1
## 201 2 307 2350 37.64 1
## 202 2 308 0 37.70 1
## 203 2 308 10 37.46 1
## 204 2 308 20 37.41 1
## 205 2 308 30 37.46 1
## 206 2 308 40 37.56 1
## 207 2 308 50 37.55 1
## 208 2 308 100 37.75 1
## 209 2 308 110 37.76 1
## 210 2 308 120 37.73 1
## 211 2 308 130 37.77 1
## 212 2 308 140 38.01 1
## 213 2 308 150 38.04 1
## 214 2 308 200 38.07 1
# (a) VADeaths 데이터셋의 자료형을 확인하고 만일 데이터프레임이 아니면 데이터프레임으로 변환하시오.
class(VADeaths)
## [1] "matrix"
VADeaths <- as.data.frame(VADeaths)
class(VADeaths)
## [1] "data.frame"
# (b) 행 이름을 이용하여 Age변수를 추가하고 기존의 행이름을 삭제하시오.
VADeaths$Age <- rownames(VADeaths)
rownames(VADeaths) <- NULL
VADeaths
## Rural Male Rural Female Urban Male Urban Female Age
## 1 11.7 8.7 15.4 8.4 50-54
## 2 18.1 11.7 24.3 13.6 55-59
## 3 26.9 20.3 37.0 19.3 60-64
## 4 41.0 30.9 54.6 35.1 65-69
## 5 66.0 54.3 71.1 50.0 70-74
# (c) 네 개 사망률 변수에 대한 평균을 계산하여 Average변수에 추가하시오.
VADeaths$Average <- rowMeans(VADeaths[,1:4])
VADeaths
## Rural Male Rural Female Urban Male Urban Female Age Average
## 1 11.7 8.7 15.4 8.4 50-54 11.050
## 2 18.1 11.7 24.3 13.6 55-59 16.925
## 3 26.9 20.3 37.0 19.3 60-64 25.875
## 4 41.0 30.9 54.6 35.1 65-69 40.400
## 5 66.0 54.3 71.1 50.0 70-74 60.350
# (d) Age 변수와 Average 변수가 첫번째, 두번째 열에 위치하도록 열의 순서를 조정하시오.
VADeaths <- VADeaths[,c(5,6,1:4)]
VADeaths
## Age Average Rural Male Rural Female Urban Male Urban Female
## 1 50-54 11.050 11.7 8.7 15.4 8.4
## 2 55-59 16.925 18.1 11.7 24.3 13.6
## 3 60-64 25.875 26.9 20.3 37.0 19.3
## 4 65-69 40.400 41.0 30.9 54.6 35.1
## 5 70-74 60.350 66.0 54.3 71.1 50.0
# (a) USArrests 데이터셋의 데이터 구조를 확인하고, 다섯 행 간격으로 데이터를 화면에 출력하시오(1번행 , 6번행, 11번행,...).
str(USArrests)
## 'data.frame': 50 obs. of 4 variables:
## $ Murder : num 13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
## $ Assault : int 236 263 294 190 276 204 110 238 335 211 ...
## $ UrbanPop: int 58 48 80 50 91 78 77 72 80 60 ...
## $ Rape : num 21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...
USArrests[seq(1,nrow(USArrests),5),]
## Murder Assault UrbanPop Rape
## Alabama 13.2 236 58 21.2
## Colorado 7.9 204 78 38.7
## Hawaii 5.3 46 83 20.2
## Kansas 6.0 115 66 18.0
## Massachusetts 4.4 149 85 16.3
## Montana 6.0 109 53 16.4
## New Mexico 11.4 285 70 32.1
## Oklahoma 6.6 151 68 20.0
## South Dakota 3.8 86 45 12.8
## Virginia 8.5 156 63 20.7
# (b) 10만명당 살인사건 발생건수가 15를 초과하는 주는 몇 개인지 구하시오.
nrow(subset(USArrests, USArrests$Murder>15))
## [1] 4
# (c) 10만명당 살인사건 발생건수가 평균을 초과하는 주의 명단을 제시하시오.
rownames(subset(USArrests, USArrests$Murder>mean(USArrests$Murder)))
## [1] "Alabama" "Alaska" "Arizona" "Arkansas"
## [5] "California" "Colorado" "Florida" "Georgia"
## [9] "Illinois" "Kentucky" "Louisiana" "Maryland"
## [13] "Michigan" "Mississippi" "Missouri" "Nevada"
## [17] "New Mexico" "New York" "North Carolina" "South Carolina"
## [21] "Tennessee" "Texas" "Virginia"
# (d) 10만명당 살인사건 발생건수가 가장 큰 주와 가장 작은 주의 이름을 제시하시오. 이 때, which.max()와 which.min()함수의 사용법을 검색하여 확인후 사용하시오.
row.names(USArrests[which.max(USArrests$Murder),])
## [1] "Georgia"
row.names(USArrests)[which.min(USArrests$Murder)]
## [1] "North Dakota"
library(MASS)
str(mammals)
## 'data.frame': 62 obs. of 2 variables:
## $ body : num 3.38 0.48 1.35 465 36.33 ...
## $ brain: num 44.5 15.5 8.1 423 119.5 ...
mammals$size <- ifelse(mammals$body>median(mammals$body),"large","small")
head(mammals)
## body brain size
## Arctic fox 3.385 44.5 large
## Owl monkey 0.480 15.5 small
## Mountain beaver 1.350 8.1 small
## Cow 465.000 423.0 large
## Grey wolf 36.330 119.5 large
## Goat 27.660 115.0 large
mammals[mammals$size=="large",] # subset(mammals,size=="large")
## body brain size
## Arctic fox 3.385 44.5 large
## Cow 465.000 423.0 large
## Grey wolf 36.330 119.5 large
## Goat 27.660 115.0 large
## Roe deer 14.830 98.2 large
## Verbet 4.190 58.0 large
## Nine-banded armadillo 3.500 10.8 large
## Asian elephant 2547.000 4603.0 large
## Donkey 187.100 419.0 large
## Horse 521.000 655.0 large
## Patas monkey 10.000 115.0 large
## Giraffe 529.000 680.0 large
## Gorilla 207.000 406.0 large
## Grey seal 85.000 325.0 large
## Human 62.000 1320.0 large
## African elephant 6654.000 5712.0 large
## Water opossum 3.500 3.9 large
## Rhesus monkey 6.800 179.0 large
## Kangaroo 35.000 56.0 large
## Yellow-bellied marmot 4.050 17.0 large
## Okapi 250.000 490.0 large
## Sheep 55.500 175.0 large
## Jaguar 100.000 157.0 large
## Chimpanzee 52.160 440.0 large
## Baboon 10.550 179.5 large
## Giant armadillo 60.000 81.0 large
## Rock hyrax-b 3.600 21.0 large
## Raccoon 4.288 39.2 large
## Pig 192.000 180.0 large
## Brazilian tapir 160.000 169.0 large
## Red fox 4.235 50.4 large
mammals[which.max(mammals$body),]
## body brain size
## African elephant 6654 5712 large
row.names(mammals[which.min(mammals$body),])
## [1] "Lesser short-tailed shrew"
mammals$brain.percent <- (mammals$brain/mammals$body)
head(mammals)
## body brain size brain.percent
## Arctic fox 3.385 44.5 large 13.1462334
## Owl monkey 0.480 15.5 small 32.2916667
## Mountain beaver 1.350 8.1 small 6.0000000
## Cow 465.000 423.0 large 0.9096774
## Grey wolf 36.330 119.5 large 3.2892926
## Goat 27.660 115.0 large 4.1576283
mammals[which.max(mammals$brain.percent),]
## body brain size brain.percent
## Ground squirrel 0.101 4 small 39.60396
mammals[which.min(mammals$brain.percent),]
## body brain size brain.percent
## African elephant 6654 5712 large 0.858431
subset(mammals, brain.percent>median(brain.percent) & size=="large")
## body brain size brain.percent
## Arctic fox 3.385 44.5 large 13.146233
## Roe deer 14.830 98.2 large 6.621713
## Verbet 4.190 58.0 large 13.842482
## Patas monkey 10.000 115.0 large 11.500000
## Human 62.000 1320.0 large 21.290323
## Rhesus monkey 6.800 179.0 large 26.323529
## Chimpanzee 52.160 440.0 large 8.435583
## Baboon 10.550 179.5 large 17.014218
## Raccoon 4.288 39.2 large 9.141791
## Red fox 4.235 50.4 large 11.900826
탐색적 분석을 위해 EDA와 R by example을 참조하여 다음을 수행한다.
plot(mammals$body, mammals$brain)을 수행하여 나타난 그림을 확인 후 문제점이 무엇인지 설명하시오.# 두 변수의 단위가 너무 커서 x와 y의 변화관계가 그림에 잘 드러나지 않는다. 즉 값들이 왼쪽 아래에 몰려 있어 관계를 파악하기 어렵다.
plot(mammals$body, mammals$brain)
plot(log(mammals$body), log(mammals$brain), xlab="log(body)", ylab = "log(brain)")을 수행하고 (f)와 비교하시오## 로그변환(log-log 모델)을 통해 x와 y의 변화관계를 절대량이 아닌 비율(x의 미세한 %변화율에 대한 y의 %변화율)로 표현해서 변화관계를 파악하기에 좋다.
plot(log(mammals$body), log(mammals$brain), xlab="log(body)", ylab = "log(brain)")