SlideShare a Scribd company logo
1 of 50
Download to read offline
R의 함수
■ R 함수의 종류
cafe.daum.net/oracleoracle
2. 숫자함수
1. 문자함수
3. 날짜함수
4. 일반함수
5. 변환함수
■ 문자함수
cafe.daum.net/oracleoracle
SQL vs R
upper
lower
substr
replace
cocat
toupper
tolower
substr
gsub
paste
문제27
cafe.daum.net/oracleoracle
이름과 직업을 출력하는데 소문자로 출력하시오
문제28
cafe.daum.net/oracleoracle
이름이 scott 인 사원의 이름과 월급을 조회하는
데 scott 을 소문자로 조회해도 조회되게 코드를
구현하시오
문제29
cafe.daum.net/oracleoracle
이름의 두번째 철자가 M 인 사원들의 이름과 월급을
출력하는데 substr 함수를 이용해서 출력하시오
두번째 자리부터 두번째 자리까지
문제30
cafe.daum.net/oracleoracle
이름을 출력하고 그 옆에 이름의 첫번째 철자부터
세번째 철자까지 출력하시오
문제31
cafe.daum.net/oracleoracle
우리반 테이블을 R 로 로드하고 이름과 성씨를
출력하시오
문제32
cafe.daum.net/oracleoracle
우리반에 성씨가 무엇무엇이 있는지 중복제거해서
출력하시오
문제33
cafe.daum.net/oracleoracle
이름, 나이, 통신사를 출력하시오
문제34
cafe.daum.net/oracleoracle
전공이 경제학과인 학생들의 이름, 나이, 주소를
출력하시오
문제35
cafe.daum.net/oracleoracle
이름과 월급을 출력하는데 월급을 출력할때에
숫자 0 을 * 로 출력하시오
gsub 설명 : gsub('h', 'H', text)
특정 text 에서 소문자 h 를 대문자 H 로 변경해라
문제36
cafe.daum.net/oracleoracle
이름과 월급을 출력하는데 월급을 출력할때에
숫자 0,1,2 를 * 로 출력하시오
문제36_2
cafe.daum.net/oracleoracle
paste 함수를 이용해서 이름과 직업을 아래와 같이
출력하시오
paste 함수는 오라클의 연결연산자와 비슷한 기능을
하는 함수
문제36_2
cafe.daum.net/oracleoracle
문제36_3
cafe.daum.net/oracleoracle
이름과 연봉을 아래와 같이 출력하시오
SCOTT 의 연봉은 36000 입니다
■ 숫자함수
cafe.daum.net/oracleoracle
SQL vs R
1. round
2. trunc
3. mod
4. power
1. round
2. trunc
3. %%
4. ^ (예: 2^3)
문제37
cafe.daum.net/oracleoracle
6의 9승을 출력 하시오
문제38
cafe.daum.net/oracleoracle
10을 3으로 나눈 나머지값이 무엇인가?
문제39
cafe.daum.net/oracleoracle
이름과 연봉을 출력하는데 연봉이 월급에 12를
곱해서 출력하고 컬럼명이 한글로 이름, 연봉으
로 출력되게 하시오
■ R 의 round 함수의 특징
cafe.daum.net/oracleoracle
122 ------------------------ 123
round(122.5)
R은 짝수를 좋아한다
123 ------------------------ 124
round(123.5)
■ round 와 trunc 함수 설명
cafe.daum.net/oracleoracle
3 6 7 8 . 7 8
-1-2-3-4 0 1 2
trunc(3678.78, 1)
trunc(3678.78, -1)
■ 날짜함수
cafe.daum.net/oracleoracle
오라클 vs R
sysdate
add_months
months_between
last_day
next_day
Sys.Date()
difftime
사용자 정의 함수
사용자 정의 함수
사용자 정의 함수
문제40
cafe.daum.net/oracleoracle
오늘 날짜를 출력하시오
문제41
cafe.daum.net/oracleoracle
이름, 입사한 날짜부터 오늘까지 총 몇일 근무
했는지 출력하시오
문제42
cafe.daum.net/oracleoracle
이름, 입사한 날짜부터 오늘까지 총 몇달 근무
했는지 출력하시오
문제43
cafe.daum.net/oracleoracle
오늘날짜의 달의 마지막 날짜를 출력하시오
SQL: select last_day(sysdate) from dual;
R : install.packages("lubridate")
library(lubridate)
?lubridate
문제44
cafe.daum.net/oracleoracle
last_day 라는 함수를 생성하시오
SQL: select last_day(sysdate) from dual;
R : last_day <- function(x) {
ceinling_date(x, "month") - 1
}
last_day( Sys.Date() )
문제45
cafe.daum.net/oracleoracle
first_day 라는 함수를 생성하시오
R : first_day <- function(x) {
floor_date(x, "month")
}
first_day ( Sys.Date() )
문제46
cafe.daum.net/oracleoracle
next_day 함수를 생성하시오
R : next_day( Sys.Date(), ‘금요일’)
문제46 답
cafe.daum.net/oracleoracle
R : next_day( Sys.Date(), ‘금요일’)
next_day <- function(x,day) {
for ( i in 1:7 ) {
check_date = x + i
if (format(check_date, '%A') == day) {
print (check_date)
}
}
}
문제47
cafe.daum.net/oracleoracle
이름, 입사일, 입사한 요일을 출력하시오
%A : 요일 %d : 일
%Y : 년도 4자리 %H : 시간
%y : 년도 2자리 %M : 분
%m: 달 %S : 초
문제48
cafe.daum.net/oracleoracle
내일이 무슨 요일인지 출력하시오
문제49
cafe.daum.net/oracleoracle
오라클의 add_months 함수를 R 에서 생성
하기 위해 다음 식을 수행하시오
- 오늘부터 100달뒤의 날짜를 오라클에서 출력하시오
- R 에서 오늘부터 100 달뒤의 날짜를 출력하시오
문제50
cafe.daum.net/oracleoracle
아래와 같이 add_months 함수를 실행하면
100 달뒤의 날짜가 출력되게 함수를 생성하시오
> add_months(Sys.Date(), 100)
문제50 답
cafe.daum.net/oracleoracle
> add_months(Sys.Date(), 100)
> add_months <- function(x, y) {x + months(y)}
문제50
cafe.daum.net/oracleoracle
오라클의 months_between 함수를 R 에서
생성하기 위해서 아래의 식을 구현하시오
- 오라클에서 이름, 입사한 날짜부터 오늘까지 총 몇달 근무
했는지 출력하시오
- R 에서 아래와 같이 수행하면 달수가 출력되는 함수를
생성하시오
months_between(Sys.Date(), emp$hiredate)
438,444,444,445, ......
문제50 답 힌트
cafe.daum.net/oracleoracle
months_between(Sys.Date(), emp$hiredate)
438,444,444,445, ......
힌트 :
문제50 답 힌트
cafe.daum.net/oracleoracle
months_between(Sys.Date(), emp$hiredate)
438,444,444,445, ......
힌트 :
■ 일반함수
cafe.daum.net/oracleoracle
오라클 vs R
nvl is.na
decode ifelse
case ifelse
■ ifelse 함수 예제
cafe.daum.net/oracleoracle
이름, 월급, 등급을 출력하는데 월급이 1500 이상이면
등급을 A 로 출력하고 아니면 B 로 출력하시오
> data.table( 이름 =emp$ename,
월급 =emp$sal,
등급 =ifelse(emp$sal>=1500, 'A', 'B') )
문제52
cafe.daum.net/oracleoracle
이름, 월급, 등급을 출력하는데 월급이 3000 이상이면
A 를 출력하고 월급이 1500 이상이고 3000 보다 작으면
B 를 출력하고 나머지 사원들은 C 를 출력하시오
> data.table( 이름 =emp$ename,
월급 =emp$sal,
등급 =ifelse(emp$sal>=1500, 'A', 'B') )
문제52 답
cafe.daum.net/oracleoracle
문제53
cafe.daum.net/oracleoracle
이름, 입사일, 보너스를 출력하는데
1980 년도에 입사했으면 보너스를 A 로 출력하고
1981 년도에 입사했으면 보너스를 B 로 출력하고
1982년도에 입사했으면 보너스를 C 로 출력하고
나머지년도는 D 로 출력되게하시오
문제54
cafe.daum.net/oracleoracle
이름과 커미션을 출력하는데 is.na 함수를 이용해서
커미션이 NA 인 사원들을 출력하시오
문제55
cafe.daum.net/oracleoracle
이름과 커미션을 출력하는데 커미션이 NA 인 사원들은
no comm 이란 글씨로 출력되게 하시오
■ 변환함수
cafe.daum.net/oracleoracle
“ 데이터의 유형을 변경하는 함수 “
오라클 vs R
to_char as.character
to_number as.integer
to_date as.Date
as.factor
format 함수
■ format 함수 설명
cafe.daum.net/oracleoracle
format( as.Date(emp$hiredate), ‘%A’ )
%Y  년도
%m  달
%d  일
%A  요일
예제: 내가 무슨 요일에 태어났는지 출력하시오
cafe.daum.net/oracleoracle
........
오빠 !
NA가 뭐야?
좀더자자 좀더졸자 좀더 눕자하면 네 빈곤이 강도 같이오고 네 궁핍이 군사같이 이르리라
-잠언 6장 10절
cafe.daum.net/oracleoracle

More Related Content

Similar to R에서의 함수 (7)

ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!
 
제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements
 
R에서 막대그래프와 원형 그래프 그리는 방법
R에서 막대그래프와 원형 그래프 그리는 방법R에서 막대그래프와 원형 그래프 그리는 방법
R에서 막대그래프와 원형 그래프 그리는 방법
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
Pyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlabPyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlab
 
R 시작해보기
R 시작해보기R 시작해보기
R 시작해보기
 
실전 DataSnap!
실전 DataSnap!실전 DataSnap!
실전 DataSnap!
 

R에서의 함수