2020. 7. 13. 17:05ㆍADP | ADsP with R/Knowledge
R언어와 사용법에 관한 게시글들은 "한국 데이터 산업진흥원"에서 출간한 국가공인 ADP/ADsP자격증을 위한 "데이터 분석 전문 가이드"에 서술된 수준에 한정지어 다루어 볼 것입니다.
ADP필기 준비를 위한 R의 기본적인 문법과 패키지들을 학습을 목표로 합니다.
1. 사용자 정의 함수
# 사용자 함수 정의 addto
addto = function(a){
isum = 0
for (i in 1:a){
isum = isum + i
}
print(isum)
}
# 사용자 함수 실행
addto(100)
addto(50)
- 위의 예시에서는 1부터 a까지 합을 계산해서 출력해내는 함수를 만들었다.
- R의 사용자 함수는 다른 함수들과 다르게 변수에 수치를 대입하듯 함수를 실행할 알고리즘을 함수를 보관하는 변수에 대입한다.
- 함수이름 = function(x,y,z)의 형식으로 선언한다. x,y,z는 함수에 들어가는 인수이다.
2. R의 그래픽 기능
1) 산점도 그래프
# dataset
height = c(170,168,174,175,188,165,165,190,173,168,159,170,184,155,165)
weight = c(68,65,74,77,92,63,67,95,72,69,60,69,73,56,55)
# making plot
plot(height,weight)
- 위의 결과는 몸무게,키 dataset을 plot함수를 통해서 산점도로 나타내었다.
2) 산점도 행렬
pairs(iris[1:4],main="Anderson's Iris Data - 3 species",
pch = 21 , bg = c("red", "green3", "blue")[unclass(iris$Species)])
- 위의 결과는 iris dataset을 pairs함수를 통해서 산점도로 나타내었다.
- main = "제목"
- pch = 그래프상 찍히는 점의 모양
- bg = "색상1, 색상2, 색상3"[컬럼1, 컬럼2, 컬럼3] // 그래프에 찍히는 점의 색상
- unclass(iris$Species) 함수는 iris의 각 컬럼마다 데이터를 분할해서 나타내는 것이다.
3) 히스토그램
StatScore = c(88,90,78,84,76,68,50,48,33,70,48,66,88,96,79,65,27,88,96,33,64,48,77,18,26,44,48,68,77,64,88,95,79,88,49,30,29,10,49,88)
hist(StatScore, prob =T)
- 히스토그램은 데이터의 분포도를 나타내주는 그래프이다.
- prob = T 옵션을 통해서 상대도수를 표시하도록 변경할 수 있다.
4) 상자그림(Box plot)
StatScore = c(88,90,78,84,76,68,50,48,33,70,48,66,88,96,79,65,27,88,96,33,64,48,77,18,26,44,48,68,77,64,88,95,79,88,49,30,29,10,49,88)
boxplot(StatScore)
- 상자그림은 데이터의 4분위수를 그림으로 나타낸 것이다.
- 맨 아래선과 맨 위선은 최소, 최대를 나타내며,
- 가운데 진한 선은 평균, 그 위,아래 선은 1분위선과 3분위선이다.
3. 기타 유용한 기능들
1) paste
number = 1:10
alphabet = c("a","b","c")
paste(number, alphabet)
paste(number, alphabet, sep=" to the ")
- paste 함수는 입력받은 문자열을 하나로 붙인다.
- sep = "구분자" // 구분자를 입력할 수 있다.
2) substr
# 문자열에서 추출
substr("BigDataAnalysis", 1,4)
- substr 함수는 문자열에서 특정 문자열을 추출하는 기능을 한다.
- substr("문자열", a, b) // 문자열에서 a번째부터 b번째 문자열 까지 추출
# 벡터에서 추출
country = c("Korea","Japan","China","Singapore","Russia")
substr(country,1,3)
- 벡터도 문자열과 마찬가지로 쓰인다. 다만 문자열에서 벡터의 순서로 대체될 뿐이다.
3) 자료형 데이터 구조 변환
as.data.frame(x) # 데이터프레임 형태로 변환
as.list(x) # 리스트 형태로 현환
as.matrix(x) # 행렬 형태로 변환
as.vector(x) # 벡터 형태로 변환
as.factor(x) # 팩터(factor) 형태로 변환
as.integer(x) # 정수 형태로 변환
as.numeric(x) # 수치 형태로 변환
as.character(x) # 문자열 형태로 변환
as.logical(x) # 논리값 형태로 변환
예시)
as.integer(3.14)
as.numeric("SH")
as.numeric(FALSE)
as.character(101)
as.logical(0.45)
- 자료형 구조를 변환할 경우 맞지 않는 타입이라면, 결측치 NA를 생성하고, 경고메시지를 보낸다.
- 논리값의 경우 값이 존재하면 TRUE로, 값이 0인 경우에만 FALSE로 변환한다.
- 데이터 프레임을 행렬로 변환할 경우, 수치형과 문자형, 논리형 벡터들이 함께 있으면, 모두 문자형("~~")으로 통일시켜 행렬로 변환시킨다.
4) 문자열 -> 날짜로 변환
Sys.Date() # 현재 날짜를 반환
as.Date() # 날짜 객체로 변환
예시)
Sys.Date()
as.Date("2020-07-13")
as.Date("07/13/2020")
as.Date("07/13/2020", format = "%m/%d/%Y")
- R에서의 기본 날짜 인식 유형은 yyyy/mm/dd형식이다.
- 그렇기에 기본 인식이 아닌 경우 변환을 하려면 그에 맞는 형식이 출력되도록 형식을 지정해주어야 한다.
5) 날짜 -> 문자열 변환
format(데이터, 포멧)
as.character()
예시)
as.Date("07/13/2020", format = "%m/%d/%Y")
format(Sys.Date())
as.character(Sys.Date())
format(Sys.Date(),format = "%m/%d/%Y")
- 기존 날짜 형식을 원하는 방식으로 바꿀 수 있다.
format(Sys.Date(),'%a') # '%a'는 요일을 출력한다.
format(Sys.Date(),'%b') # '%b'는 월을 출력한다.
format(Sys.Date(),'%m') # '%m'는 두 자리수 월을 출력한다.
format(Sys.Date(),'%d') # '%d'는 두 자리수 일을 출력한다.
format(Sys.Date(),'%y') # '%y'는 두 자리수 년도를 출력한다.
format(Sys.Date(),'%Y') # '%Y'는 네 자리수 년도를 출력한다.
- format()함수를 통해 원하는 시간대(년도,월,일,요일)을 특정 표식으로 출력할 수 있다.
'ADP | ADsP with R > Knowledge' 카테고리의 다른 글
[ADP] R - 결측값 처리와 이상값 탐색 (0) | 2020.07.14 |
---|---|
[ADP] R-데이터 마트(2) / sqldf / plyr / data.table (0) | 2020.07.14 |
[ADP] R-데이터 마트(1) / reshape패키지(metl,cast함수) (1) | 2020.07.13 |
[ADP] R-기초(2) : R 기초통계연산 / R 데이터 핸들링(인덱싱, 슬라이싱) / 반복문과 조건문 (0) | 2020.07.13 |
[ADP] R-기초(1) : 패키지 설치/R의 데이터 구조/외부 데이터 불러오기 (0) | 2020.07.09 |