59doit

[ R ] 연습문제 (2) 본문

Programming/R

[ R ] 연습문제 (2)

yul_S2 2022. 11. 16. 12:27
반응형

 1. 다음과 같은 벡터 객체를 생성하시오

1) 벡터 변수 Vec1를 만들고, “R”문자가 10회 반복되도록 하시오

Vec1 <- rep("R",10) 
Vec1
# [1] "R" "R" "R" "R" "R" "R" "R" "R" "R" "R"

 

2) 벡터 변수 Vec2에 1-10까지 3을 간격으로 연속된 정수를 만드시오.

Vec2 <- seq(1,10, by=3)
Vec2
# [1]  1  4  7 10

 

3) 벡터 변수 Vec3에 1-10까지 3을 간격으로 연속된 정수가 3회 반복되도록 만드시오.

Vec3 <- rep(Vec2, 3)
Vec3
# [1]  1  4  7 10  1  4  7 10  1  4  7 10

 

4) 벡터 변수 Vec4에 Vec2 – Vec3이 모두 포함되는 벡터를 만드시오.

Vec4 <- c(Vec2, Vec3)
Vec4
# [1]  1  4  7 10  1  4  7 10  1  4  7 10  1  4  7 10

 

5) 25부터 15까지 5를 간격으로 seq()함수를 이용하여 벡터를 생성하시오.

s <- seq(25, 15, -5)
s
# [1] 25 20 15

 

6) 벡터 변수 Vec4에서 홀수 번째 값들만 선택하여 벡터 변수 Vec5에 첨자를 이용하여할당하시오.

Vec5 <- Vec4[seq(1, 16, by=2)]  #length(Vec4)=16
Vec5
# [1] 1 7 1 7 1 7 1 7

 

 

 

 

 2.  다음과 같은 벡터를 컬럼으로 갖는 데이터 프레임을 생성하시오.


name <- c("최민수","유관순","이순신","김유신","홍길동")
age <- c(55, 45, 45, 53, 15)                               # 연령
gender <- c(1, 2, 1, 1, 1)                                    #1: 남자, 2: 여자
job <- c("연예인", "주부", "군인", "직장인", "학생")
sat <- c(3, 4, 2, 5, 5)
grade <- c("C", "C", "A", "D", "A")
total <- c(44.4, 28.5, 43.5, NA, 27.1)                 #총구매액(NA: 결측치)

 


1) 위 7개의 벡터를 컬럼으로 갖는 user 테이터프레임을 생성하시오

user <- data.frame(name,age,gender,job,sat,grade,total)
user
#     name age gender    job sat grade total
# 1 최민수  55      1 연예인   3     C  44.4
# 2 유관순  45      2   주부   4     C  28.5
# 3 이순신  45      1   군인   2     A  43.5
# 4 김유신  53      1 직장인   5     D    NA
# 5 홍길동  15      1   학생   5     A  27.1


2) gender변수를 이용하여 히스토그램을 그리시오.

hist(user$gender)

 

 

3) 데이터프레임 user에서 짝수 행만 선택하여 user2에 넣으시오.

user2 <- user[x%%2==0,]
user2
#     name age gender    job sat grade total
# 2 유관순  45      2   주부   4     C  28.5
# 4 김유신  53      1 직장인   5     D    NA

 

 

 

 

 3. Data를 대상으로 apply()를 적용하여 행/열 방향으로 조건에 맞게 통계량을 구하시오.


kor <- c(90,85,90)
eng <- c(70,85,75)
mat <- c(86,92,88)


1) 3개의 과목점수를 이용하여 데이터프레임(Data)을 생성하시오.

Data <- data.frame(kor=kor,eng=eng,mat=mat)
Data
#   kor eng mat
# 1  90  70  86
# 2  85  85  92
# 3  90  75  88

 

2) 행/열 방향으로 max()함수를 적용하여 최대값을 구하시오.

apply(Data,1,max)
# [1] 90 92 90

apply(Data,2,max)
# Kor Eng Mat 
# 90  85  92 

 

3) 행/열 방향으로 mean()함수를 적용하여 평균을 구하여 소수점 2자리까지 표현하시오.

round(apply(Data,1,mean),2)
# [1] 82.00 87.33 84.33

round(apply(Data,2,mean),2)
# kor   eng   mat 
# 88.33 76.67 88.67 

 

4) 행 단위의 분산과 표준편차를 구하시오.

#분산
apply(Data,1,var)
# [1] 112.00000  16.33333  66.33333

#표준편차
apply(Data,1,sd)
# [1] 10.583005  4.041452  8.144528

 

 

 

 

 4. 다음의 Data2 객체를 대상으로 정규표현식을 적용하여 문자열을 처리하시오


Data2 <- c("2017-02-05 수입3000원", 
  "2017-02-06 수입4500원", 
  "2017-02-07 수입2500원")
library(stringr)


1) 일자별 수입을 다음과 같이 출력하시오.

# 출력결과: “3000원”, “4500원”, “2500원”

income <- str_extract_all(Data2, '[0-9]{4}[가-히]')
income
# [[1]]
# [1] "3000원"

# [[2]]
# [1] "4500원"

# [[3]]
# [1] "2500원"

unlist(income) 
# [1] "3000원" "4500원" "2500원"

 

2) 위벡터에서 연속하여 2개 이상 나오는 모든 숫자를 제거하시오.

#출력결과: “—수입원” “—수입원””—수입원”

str_replace_all(Data2, '[0-9]{2}', '') 
# [1] "-- 수입원" "-- 수입원" "-- 수입원"

 

3) 문제 내 벡터에서 –를 /로 치환하시오.

#출력결과: “2017/02/05 수입3000원” “2017/02/06 수입4500원” “2017/02/07 수입2500원”

string_rep <- str_replace_all(Data2, '-', '/')
string_rep
# [1] "2017/02/05 수입3000원" "2017/02/06 수입4500원" "2017/02/07 수입2500원"

 

4) 모든 원소를 쉼표(,)에 의해서 하나의 문자열로 합치시오.

#출력결과: “2017-02-05 수입3000원,2017-02-06 수입4500원,2017-02-07 수입2500원”

string_join <- paste(Data2, collapse = ',')
string_join
# [1] "2017-02-05 수입3000원,2017-02-06 수입4500원,2017-02-07 수입2500원"

 

반응형

'Programming > R' 카테고리의 다른 글

[ R ] 연습문제 (3)  (0) 2022.11.17
[ R ] 데이터 입출력  (0) 2022.11.17
[ R ] List 자료구조 & 문자열처리  (0) 2022.11.16
[ R ] DataFrame 자료구조  (0) 2022.11.15
[ R ] Matrix & Array 자료 구조  (0) 2022.11.15
Comments