코딩초보 김씨

[R] 행렬과 데이터프레임 - 복습 문제 & 정답 본문

R

[R] 행렬과 데이터프레임 - 복습 문제 & 정답

초보김씨 2021. 6. 19. 15:31

[문제 1] R을 이용하여 각 문제를 수행하기 위한 코드를 작성하시오.

(1) 위와 같은 내용의 매트릭스 score를 생성하시오.

(2) score의 열 이름을 각각 male, female로 바꾸시오.

(3) 2행에 있는 모든 값을 출력하시오.

(4) female의 모든 값을 출력하시오.

(5) 3행 2열의 값을 출력하시오.

 

[답변 1]

(1) 매트릭스 생성

score <- matrix(c(10, 21, 40, 60, 60, 70, 20, 30), nrow=4, ncol=2, byrow=T)
colnames(score) <- c('m', 'f')
score

 

(2) score의 열 이름 바꾸기

colnames(score)[1] <- 'male'
colnames(score)[2] <- 'female'
score

(3) 행 indexing

score[2,]

(4) 열 indexing

score[,2]

(5) 행/열 indexing

score[3,2]

 


 

[문제 2] R에서 제공하는 airquality 데이터셋은 일별로 대기의 질을 측정한 자 료를 포함하고 있다. 이 데이터셋에 대해서 다음 문제를 해결하기 위한 코드를 작성하시오.

(1) 이 데이터셋의 자료구조를 보이시오.

(2) 이 데이터셋의 앞쪽 일부분의 내용만 보이시오.

(3) 기온(Temp)이 가장 높은 날은 언제인지 월(Month)과 일(Day)을 보이시오.

(4) 6월달에 발생한 가장 강한 바람(Wind)의 세기를 보이시오.

(5) 7월 달의 평균 기온(Temp)을 보이시오.

(6) NA값을 제외한 5월의 평균 오존(Ozone) 농도를 보이시오.

(7) 오존(Ozone) 농도가 100을 넘는 날은 며칠이나 되는지 보이시오.

 

[답변 2]

(1) 자료구조 확인

class(airquality)

(2) 데이터셋의 앞쪽 일부 내용 확인

head(airquality)

(3) 기온(Temp)이 가장 높은 날 월(Month)과 일(Day)

# 가장 큰 Temp값 찾기 (dataframe에서 Temp는 4번째 column에 위치)
max(airquality[,4])

# airquality 중 temp가 97인 데이터 프레임 반환
max_temp <- subset(airquality, Temp==97)

# data 확인
max_temp

 

(4) 6월달 가장 강한 바람(Wind)의 세기

# airquality 데이터셋에서 6월달, Wind column 추출
max_wind_June <- subset(airquality, Month==6, select = Wind)

# 추출한 데이터셋 값의 max값 추출
max(max_wind_June)

 

(5) 7월 달 평균 기온(Temp)

# airquality 데이터셋에서 7월달, Temp column 추출
mean_temp_July <- subset(airquality, Month==7, select = Temp)

# 추출한 데이터 column 값의 평균 추출
colMeans(mean_temp_July)

 

(6) NA값을 제외한 5월 평균 오존(Ozone) 농도

# na.rm=T : 결측치 제외
mean(airquality[1:31,1],na.rm = T)

 

(7) 오존(Ozone) 농도가 100을 넘는 날이 며칠인지

over_100 <- subset(airquality, Ozone>100)
length(over_100)

 


 

[문제 3] R을 이용하여 각 문제를 수행하기 위한 코드를 작성하시오.

(1) R에서 제공하는 state.x77 데이터셋에서 수입(Income)이 5,000 이상인 주의 데 이터에서 수입(Income), 인구(Population), 면적(Area) 열의 값들만 추출하여 rich_state.csv 에 저장하시오.

(2) (1)에서 만든 rich_state.csv 파일을 읽어서 ds 변수에 저장한 후 ds의 내용을 출력하시오.

 

[답변 3]

(1) R에서 제공하는 state.x77 데이터셋에서 수입(Income)이 5,000 이상인 주의 데 이터에서 수입(Income), 인구(Population), 면적(Area) 열의 값들만 추출하여 rich_state.csv 에 저장하시오.

# 'st' 객체에 df 저장
st <- as.data.frame(state.x77)
st

# 조건에 맞는 값만 새로운 객체에 저장
over_5000 <- subset(st, Income>=5000, select = c(Population,Income,Area))
over_5000

# csv 파일로 저장 (row.names : 행 name을 저장할 것인지)
write.csv(over_5000, 'rich_state.csv', row.names=T)

(2) (1)에서 만든 rich_state.csv 파일을 읽어서 ds 변수에 저장한 후 ds의 내용을 출력하시오.

ds <- read.csv('rich_state.csv', header=T)
ds

 

 

Comments