[0412] R 프로그래밍 익히기
[R 프로그래밍 기초함수]
- 벡터 : 1차원이며, 한가지 데이터 유형으로 구성, 할당 연산자인 <- 와 c() 함수 이용해 생성.
변수명 <- c(값)
- mode() : 데이터 유형 확인 함수
- typeof() : 데이터 유형 확인 함수. 숫자형을 정수와 실수 구분함. (실수: double, 정수: integer)
- str() : 데이터 유형과 값을 전체적으로 확인하는 함수
- length() : 데이터 길이 확인하는 함수
- remove(), rm() : 직접 생성했거나 불러오기로 가져온 데이터 세트 삭제
- factor() : 범주형 자료(categorical data) 생성
factor(범주화할 자료, labels = c("범주1", "범주2"))
- matrix() : 행렬(행과 열로 구성된 2차원 단일형 데이터) 생성
matrix(벡터, nrow=행 개수, ncol=열 개수)
matrix(벡터, nrow=행 개수, ncol=열 개수, byrow=T) #byrow=T 옵션으로 데이터 배치 순서 행방향으로 변경.
- array() : 배열(행렬을 n차원으로 확대한 구조) 생성
array(변수명, dim = c(행 수, 열 수, 차원수))
- list() : 리스트(1차원 데이터인 벡터나, 서로 다른 구조의 데이터를 그룹으로 묶은 데이터 세트) 생성
- data.frame() : 데이터프레임(리스트를 2차원으로 확대한 것) 생성
data.frame(변수명1, 변수명2, ..., 변수명n)
- sum(), min(), max() : 합계, 최소값, 최대값 출력 함수
- Sys.Date() : 오늘 날짜 출력 함수
- 사용자정의함수 : 내장 함수 이외에 사용자가 원하는 기능을 만들기 위해 작성.
함수명 <- function(매개변수1, 매개변수2,...) {
함수가 구현할 내용
...
return(결과값)
}
- cat() : 여러 숫자, 문자 구분없이 모두 출력
- print() : 입력된 첫번째 숫자 또는 문자(열)만 출력
- install.packages() : 패키지 설치 (패키지명에 " " 표시)
- library() : 설치한 패키지 확인
- remove.packages() : 설치한 패키지 삭제
- if-else 조건문 : 조건이 TRUE면 구문1이 실행되고, FALSE면 구문2가 실행
#if-else 조건문
if(조건) {
조건이 TRUE(참)일 때 실행되는 구문1
} else {
조건이 FALSE(거짓)일 때 실행되는 구문2
}
#else if문
if(조건1) {
조건이 TRUE(참)일 때 실행되는 구문1
} else if (조건2) {
조건1은 FALSE(거짓)이고, 조건 2는 TRUE(참)일 때 실행되는 구문2
} else {
조건1과 2 모두 FALSE(거짓)일 때 실행되는 구문3
}
- for() : 프로그래밍에서 반복문으로 많이 사용하는 함수
for(변수 in 반복 횟수) {
반복 조건만큼 실행되는 구문
}
#이중 for문
for(i in 2:9) {
for(j in 1:9) {
print(paste(i, "*", j, "=", i*j))
}
}
- apply() : 행렬 연산에 사용, x에 행렬 넣고 margin 옵션이 1이면 행, 2이면 열에 함수가 적용.
apply(x, margin, 함수)
- lapply() : 연산 결과를 리스트로 변환. 모든 자료형에 사용 할 수 있음.
- sapply() : 연산 결과를 벡터로 반환. 모든 자료형에 사용 할 수 있음.
lapply(x, 함수)
sapply(x, 함수)
[2022 04 12 과제] R 프로그래밍 실습
=
Q1. 시험 점수 변수 만들고 출력하기
다섯 명의 학생이 시험을 봤습니다. 학생 다섯 명의 시험 점수를 담고 있는 변수를 만들어 출력해 보세요.
각 학생의 시험 점수는 다음과 같습니다.
80, 60, 70, 50, 90
> test <- c(80, 60, 70, 50, 90)
> test
[1] 80 60 70 50 90
Q2. 전체 평균 구하기
앞 문제에서 만든 변수를 이용해서 이 학생들의 전체 평균 점수를 구해보세요.
> mean(test)
[1] 70
Q3. 전체 평균 변수 만들고 출력하기
전체 평균 점수를 담고 있는 새 변수를 만들어 출력해 보세요. 앞 문제를 풀 때 사용한 코드를 응용하면 됩니다.
> test_mean <- mean(test)
> test_mean
[1] 70
Q1. data.frame()과 c()를 조합해서 표의 내용을 데이터 프레임으로 만들어 출력해보세요.
제품 가격 판매량
----------------------
사과 1800 24
딸기 1500 38
수박 3000 13
> 제품 <- c("사과", "딸기", "수박")
> 가격 <- c(1800,1500,3000)
> 판매량 <- c(24,38,13)
> a <- data.frame(제품, 가격, 판매량)
> a
제품 가격 판매량
1 사과 1800 24
2 딸기 1500 38
3 수박 3000 13
Q2. 앞에서 만든 데이터 프레임을 이용해서 과일 가격 평균, 판매량 평균을 구해보세요.
> mean(a$가격)
[1] 2100
> mean(a$판매량)
[1] 25
[2022 04 12 과제2] (Vector/Matrix)
1. seq() 함수를 사용하여 date4 라는 변수에 2015년1월1일부터 2015년1월31일까지 1일씩 증가하는
31개의 날짜를 입력하는 방법을 쓰세요.
#seq.Date() 함수 사용
> date1 <- as.Date("2015-01-01")
> date2 <- as.Date("2015-01-31")
> date4 <- seq.Date(date1, date2, 1)
> date4
[1] "2015-01-01" "2015-01-02" "2015-01-03" "2015-01-04"
[5] "2015-01-05" "2015-01-06" "2015-01-07" "2015-01-08"
[9] "2015-01-09" "2015-01-10" "2015-01-11" "2015-01-12"
[13] "2015-01-13" "2015-01-14" "2015-01-15" "2015-01-16"
[17] "2015-01-17" "2015-01-18" "2015-01-19" "2015-01-20"
[21] "2015-01-21" "2015-01-22" "2015-01-23" "2015-01-24"
[25] "2015-01-25" "2015-01-26" "2015-01-27" "
#seq() 함수 사용
> seq(as.Date("2022-04-01"), as.Date("2022-04-13"), by="day")
[1] "2022-04-01" "2022-04-02" "2022-04-03" "2022-04-04"
[5] "2022-04-05" "2022-04-06" "2022-04-07" "2022-04-08"
[9] "2022-04-09" "2022-04-10" "2022-04-11" "2022-04-12"
[13] "2022-04-13"
2. 아래 그림과 같이 vec1을 생성하세요.
위의 vec1 에서 3번째 요소인 '감'을 제외하고 vec1의 값을 출력하세요.
> vec1 <- c("사과","배","감","버섯","고구마")
> vec1
[1] "사과" "배" "감" "버섯" "고구마"
> vec1[-3]
[1] "사과" "배" "버섯" "고구마"
3. 아래 그림과 같이 vec1과 vec2를 만드세요.
1) vec1과 vec2 내용을 모두 합친 결과를 출력하는 코드를 쓰세요
> vec1 <- c("봄","여름","가을","겨울")
> vec2 <- c("봄","여름","늦여름","초가을")
> union(vec1,vec2) #합집합 함수
[1] "봄" "여름" "가을" "겨울" "늦여름" "초가을"
2) vec1에는 있는데 vec2에는 없는 결과를 출력하는 코드를 쓰세요
> setdiff(vec1,vec2) #차집합 함수
[1] "가을" "겨울"
3) vec1과 vec2 모두 있는 결과를 출력하는 코드를 쓰세요
> intersect(vec1,vec2) #교집합 함수
1. 아래 그림과 같은 형태의 행렬을 만드세요
1)
> seasons <- matrix(c("봄","여름","가을","겨울"), nrow=2)
> seasons
[,1] [,2]
[1,] "봄" "가을"
[2,] "여름" "겨울"
2)
> matrix(seasons, nrow=2, byrow=T)
[,1] [,2]
[1,] "봄" "여름"
[2,] "가을" "겨울"
2. 아래 그림과 같이 seasons 행렬에서 여름과 겨울만 조회하는 방법을 쓰세요
> seasons[,2]
[1] "여름" "겨울"
3. 아래 그림과 같이 seasons 행렬에 3번 행을 추가하여 seasons_2 행렬을 만드세요.
> seasons_2 <- rbind(seasons,c("초봄","초가을")) #행추가
> seasons_2
[,1] [,2]
[1,] "봄" "가을"
[2,] "여름" "겨울"
[3,] "초봄" "초가을"
4. 아래 그림처럼 seasons_2 변수에 열을 추가하여 seasons_3 행렬을 만드세요
seasons_3 <- cbind(seasons_2,c("초여름","초겨울","한겨울")) #열추가
> seasons_3
[,1] [,2] [,3]
[1,] "봄" "가을" "초여름"
[2,] "여름" "겨울" "초겨울"
[3,] "초봄" "초가을" "한겨울"