59doit
[ R ] 연습문제 (2) 본문
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 |