https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=257831838&start=slayer

 

난생처음 R 코딩 & 데이터 분석

168개의 코드 예제를 기반으로 프로그래밍 기초부터 데이터 분석까지 다루며, R에서 사용하는 문법을 최대한 쉽게 설명하고 있다. 또한 4단계 반복 학습 시스템을 통해 프로그래밍 감각을 제대로

www.aladin.co.kr

 

01. 다음 순서도를 R 코드로 작성하시오.

n <- 12
if (n %% 2 == 1) {
  type <- 'odd'
} else {
  type <- 'even'
}
print(type)

02. 다음 조건물을 ifelse문으로 작성하시오.

# ifelse(조건, if true, if false)
ifelse(n < 0, res <- -n, res <- n)

03. 스위치가 켜졌을 때는 입력값을 모두 곱하고, 꺼졌을 때는 입력값을 합하여 결과를 출력하려고 한다. 다음 코드가 정상적으로 실행되도록 2곳을 수정하시오.

input <- 1:10
n <- length(input)
switch <- TRUE

if(switch == T){
  result <- input[1]
  for(i in 1:n){
    result <- result * i
  }
} else {
  result <- sum(input)
}

print(result)

04. 1부터 20 사이의 모든 홀수의 곱을 구하는 코드를 작성하고 결과를 구하시오(단 for문 사용).

result <- 1
for (i in 1:20) {
  if (i %% 2 != 0) {
    result <- result * i
  }
}
print(result)

05. 1부터 20 사이의 모든 홀수의 곱을 구하는 코드를 작성하고 결과를 구하시오(단 while문 사용).

n <- 1
result <- 1
while(n <= 20){
  if(n %% 2 != 0){
    result <- result * n
  }
  n <- n + 1
}
print(result)

06. mtcars 데이터셋에서 mpg, hp, wt 세 개의 열에 대한 각각의 평균을 구하려 한다. apply() 함수를 사용하여 코드를 작성하시오.

apply(mtcars[,c('mpg','hp','wt')], 2, mean) # apply(mtcars[c('mpg','hp','wt')], 2, mean)

07. 삼각형의 밑변(base)과 높이(height)를 입력받아 넓이를 반환하는 triangle.area() 함수를 정의하시오. 그리고 이 함수를 사용해 밑변이 5.2, 높이가 4.6인 삼각형의 넓이를 구하시오.

triangle.area <- function(base, height){
  result <- base * height / 2
  return(result)
}

triangle.area(5.2, 4.6)

08. 숫자 벡터를 입력받아 최솟값, 최댓값, 평균값을 구하는 함수를 작성하려고 한다. [보기 2]의 스크립트를 실행하였을 때 'min: 1, max: 9, avg: 5'가 출력되도록 [보기 1]의 빈 칸을 채워 함수를 완성하시오.

multiple.answer <- function(data){
  res.min <- min(data)
  res.max <- max(data)
  res.avg <- mean(data)
  result <- list(min=res.min, max=res.max, avg=res.avg)
  return(result)
}

# test
data <- c(1,3,5,7,9)
result <- multiple.answer(data)
cat('min:', result$min, ', max:', result$max, ', avg:', result$avg, '\n')

09. mtcars 데이터셋에서 마력(mpg)이 가장 높은 자동차와 가장 낮은 모델명을 구하는 코드를 작성하고 결과를 구하시오.

rownames(mtcars[which.max(mtcars$mpg),])
rownames(mtcars[which.min(mtcars$mpg),])

10. 다음은 한 가전 회사의 A/S 홈페이지에 게시된 내용으로 드럼세탁기가 냉온수 급수가 안 될 때, 조치 사항을 안내하고 있다. 이 조치 사항을 순서도로 작성하시오.

11. 피보나치 수열은 [보기]와 같이 첫 번째 항은 0, 두 번째 항은 1, 세 번째 항부터는 바로 직전 두 항의 합으로 만들어진다. 예를 들면 세 번째 항은 1(=1 + 0), 네 번째 항은 2(=1 + 1)이다. 피보나치 수열을 20번째 항까지 구하는 코드를 for문을 사용하여 작성하고 결과를 출력하시오.

fibonacci <- function(num){
  for(i in 1:num){
    if(i == 1){
      result <- c(0)
    } else if(i == 2){
      result <- append(result, 1)
    } else if(i >= 3){
      result <- append(result, (result[i-1] + result[i-2]))
    }
  }
  return(result)
}
fibonacci(20)

12. R에 기본으로 내장된 USArrests 데이터셋은 1973년 미국 50개 주에서 발생한 강력 범죄에 대한 기록이다. 구체적으로 각 주를 관측값으로 하여 각 열에 인구 10만명 당 살인(Murder), 폭행(Assault), 강간(Rape)에 대한 체포건수를 저장하고 있다.

# (1) 살인, 폭행, 강간 범죄에 대한 체포건수의 합을 각각 구하시오.
apply(USArrests[,c('Murder','Assault','Rape')], 2, sum)

# (2) 살인, 폭행, 강간 범죄에 대한 체포건수의 평균을 각각 구하시오.
apply(USArrests[,c('Murder','Assault','Rape')], 2, mean)

# (3) 살인 범죄 체포가 가장 많이 발생한 주는 어디인지 구하시오.
rownames(USArrests)[which.max(USArrests$Murder)]

# (4) 폭행 범죄 체포가 가장 적게 발생한 주의 살인 범죄 체포건수를 구하시오.
USArrests[which.min(USArrests$Assault),'Murder']

+ Recent posts