안녕하세요

모두를 위한 R 데이터 분석 입문 연습문제 2장 본문

Study_exam/모두를 위한 R 데이터 분석 입문 연습문제

모두를 위한 R 데이터 분석 입문 연습문제 2장

godxxy1229 2023. 4. 27. 03:07

1. R을 이용하여 다음 계산식의 코드를 작성하고 답을 구하시오.

> 25+99 
[1] 124

> 456-123
[1] 333

> 2*(3+4)
[1] 14

> (3+5*6)/7
[1] 4.714286

> (7-4)*3
[1] 9

> 210+35
[1] 245

> 1256%%7
[1] 3

> 184%%5
[1] 4

> 1976/24
[1] 82.33333

> 16*25+186*5-67*22
[1] -144

 

2. R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.

변수 a와 b에 각각 4와 5를 저장한 후 a+b의 결과를 c에 저장하고 c의 내용을 출력한다.

> a <- 4
> b <- 5
> c <- a+b
> c
[1] 9

 

3. R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.

변수 pi에 3.14를 저장한 후 pi를 이용하여 반지름이 10, 12, 15인 원의 면적을 각각 구한다.

> pi <- 3.14
> r <- c(10,12,15)
> pi*r^2
[1] 314.00 452.16 706.50

 

4. R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.

y=2x^2+5x+10에 대해 x가 각각 6, 8, 10일 때 y의 값을 각각 구한다.

> x <- c(6,8,10)
> y <- 2*x^2+5*x+10
> y
[1] 112 178 260

 

5. 다음의 R 코드의 문제점을 지적하고 어떻게 해결해야 하는지 설명하시오.

val.a <- 10
sum.ab <- val.a + val.b

val.b가 정의되어 있지 않기 때문에 sum.ab은 계산될 수 없다.

val.b를 정의하거나 sum.ab에서 val.b를 제외하면 문제가 해결된다.

 

 

 

6. 95, 86, 47, 55, 68로 구성된 벡터 vc.1을 생성하고 vc.1의 내용을 출력하는 코드를 작성하시오.

> vc.1 <- c(95,86,47,55,68)
> vc.1
[1] 95 86 47 55 68

 

7. 100 ~ 200 사이의 짝수로 구성된 벡터 vc.2를 생성하고 vc.2의 내용을 출력하는 코드를 작성하시오.

> vc.2 <- seq(100, 200, 2)
> vc.2
[1] 100 102 104 106 108 110 112 114 116 118 120
[12] 122 124 126 128 130 132 134 136 138 140 142
[23] 144 146 148 150 152 154 156 158 160 162 164
[34] 166 168 170 172 174 176 178 180 182 184 186
[45] 188 190 192 194 196 198 200

 

8. 20개의 TRUE로 구성된 vc.3을 생성하고 vc.3의 내용을 출력하는 코드를 작성하시오. (rep 함수 사용)

> vc.3 <- rep(TRUE, 20)
> vc.3
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[9] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[17] TRUE TRUE TRUE TRUE

 

9. 100에서 200으로 구성된 벡터 d를 생성한 다음 각 문제를 수행하는 코드를 작성하고 답을 구하시오.

> d <- c(100:200)

> d
[1] 100 101 102 103 104 105 106 107 108 109
[11] 110 111 112 113 114 115 116 117 118 119
[21] 120 121 122 123 124 125 126 127 128 129
[31] 130 131 132 133 134 135 136 137 138 139
[41] 140 141 142 143 144 145 146 147 148 149
[51] 150 151 152 153 154 155 156 157 158 159
[61] 160 161 162 163 164 165 166 167 168 169
[71] 170 171 172 173 174 175 176 177 178 179
[81] 180 181 182 183 184 185 186 187 188 189
[91] 190 191 192 193 194 195 196 197 198 199
[101] 200

> d[10]
[1] 109

> d[seq(1, length(d)-10,1)]
[1] 100 101 102 103 104 105 106 107 108 109 110
[12] 111 112 113 114 115 116 117 118 119 120 121
[23] 122 123 124 125 126 127 128 129 130 131 132
[34] 133 134 135 136 137 138 139 140 141 142 143
[45] 144 145 146 147 148 149 150 151 152 153 154
[56] 155 156 157 158 159 160 161 162 163 164 165
[67] 166 167 168 169 170 171 172 173 174 175 176
[78] 177 178 179 180 181 182 183 184 185 186 187
[89] 188 189 190

> d[seq(2, length(d),2)]
[1] 101 103 105 107 109 111 113 115 117 119 121
[12] 123 125 127 129 131 133 135 137 139 141 143
[23] 145 147 149 151 153 155 157 159 161 163 165
[34] 167 169 171 173 175 177 179 181 183 185 187
[45] 189 191 193 195 197 199

> d[seq(3, length(d),3)]
[1] 102 105 108 111 114 117 120 123 126 129 132
[12] 135 138 141 144 147 150 153 156 159 162 165
[23] 168 171 174 177 180 183 186 189 192 195 198

> d.20 <- d[seq(1,20,1)]

> d.20
[1] 100 101 102 103 104 105 106 107 108 109 110
[12] 111 112 113 114 115 116 117 118 119

> d.20[-5]
[1] 100 101 102 103 105 106 107 108 109 110 111
[12] 112 113 114 115 116 117 118 119

> d. 20[-c(5,7,9)]
[1] 100 101 102 103 105 107 109 110 111 112 113
[12] 114 115 116 117 118 119

 

10. 월별 결석생 수 통계가 다음과 같을 때 이 자료를 absent 벡터에 저장하시오(결석생 수를 값으로 하고, 월 이름을 값의 이름으로 한다).

JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
결석생 10 8 14 15 9 10 15 12 9 7 8 7
> absent <- c(10,8,14,15,9,10,15,12,9,7,8,7)

> names(absent) <- c('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JU N', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC')

> absent
JAN	FEB	MAR	APR	MAY	JUN	JUL	AUG	SEP	OCT	NOV	DEC
10	8	14	15	9	10	15	12	9	7	8	7

> absent ["MAY"]
MAY
9

> absent [c('JUL', 'SEP')]
JUL	SEP
15	9

> sum(absent [1:6])
[1] 66

> mean (absent [7:12])
[1] 9.666667

 

11. 벡터 d1, d2가 다음과 같을 때 각 문제를 수행하기 위한 코드를 작성하고 답을 구하시오.

d1 <- 1:50
d2 <- 51:100

 

12. 다음과 같이 벡터 v1을 생성한 다음 각 문제를 수행하기 위한 코드를 작성하고 답을 구하시오(문제를 풀다 보면 v1의 내용이 변경되기도 하는데, 모든 문제는 최초의 v1을 대상으로 하여 해결할 것).

v1 <- 51:90