1. R studio
#R스튜디오 구성
메뉴바 | |
단축 아이콘 툴바 | |
스크립트 창 | 환경 및 히스토리 |
R 콘솔 | dir , Plots , packages , 도움말 |
# 코드 실행
RUN 버튼
Ctrl + Enter
실행하고 싶은 부분만 드래그하여 Ctrl+Enter
#R 패키지 설치하기
메뉴바 - Tools - Install Packages
package 탭에서 인스톨
install.packages("패키지 이름")
#설치한 패키지 불러오기
library(패키지 이름)
#도움말 불러오기
?패키지 이름
help(패키지이름)
2. R 언어와 문법
-벡터 -행렬 -데이터 프레임
#벡터 c()
벡터 데이터 구조: 하나의 스칼라 값, 혹은 하나 이상의 스칼라 원소들을 갖는 단순한 형태의 집합 (원소: 숫자, 문자, 논리 연산자 등)
벡터는 기본적으로 열벡터가 만들어진다 ( n행 1열) 보이는건 행벡터같지만..!!! ( [1] a b c )
명령어 c를 통해 선언할 수 있다. (c: concentration 연결 )
x = c(10,20,30) # 숫자형 벡터
y = c('사과', '바나나') # 문자형 벡터
z = c(TRUE, FALSE, TRUE) #논리 연산자 벡터 TRUE = 1 FALSE = 0 # 논리 연산자는 모든 글자를 대문자로 기입!!
= 는 <- 기호로 대체해도 완전히 같은 의미를 지닌다.
x <- c(10,20,30)
y <- c('사과', '바나나')
z <- c(TRUE, FALSE, TRUE)
#c 명령어를 이용하여 벡터와 벡터를 결합하여 새로운 벡터를 만들 수 있다.
xy <- c(x,y)
# 행렬 matrix(벡터 , ncol = 열의 수 , nrow = )
벡터 값들은 열(↓)을 우선 채우는 방향으로 입력된다.
mx = matrix(c(1,2,3,4,5,6), ncol = 2)
1 4
2 5
3 6
# rbind: 기존의 행렬(벡터)에 행(→)을 추가 , cbind : 기존의 행렬(벡터)에 열(↓)을 추가
(벡터,벡터), (행렬,벡터), (행렬,벡터) 모두 가능함.
cbind(c1,mx)
rbind(mx,r1)
#데이터 프레임 df
행렬과 다르게 각 열이 서로 다른 데이터 타입을 가질 수 있다.
x = c(10,20,30)
y = c('apple','banana','orange')
dataxy = data.frame(x,y)
각 행 : 하나의 관측치(개체)
각 열 : 하나의 변수
3. 외부 데이터 불러오기
- csv - txt -xls/xlsx
#csv 파일 불러오기
-read.table
data1 <- read.table('data1 <- read.table('파일 명' , header = T, sep = ',')
header = T : csv파일의 첫 줄을 변수명으로 지정한다.
sep = ',' : 데이터가 ,로 구분되어 있음을 명시한다-> csv 파일임을 의미
-read.csv
sep 을 이용하여 구분자를 명시할 필요 없음.
#txt 파일 불러오기
txt 파일이 구분자나 형식등을 잘 지켜서 저장되어 있어야 한다!
data1 <- read.table('data1 <- read.table('파일 명' )
sep = ',' 를 명시하지 않으면 txt 파일을 불러온다 .
#xls / xlsx 파일 불러오기
(1) 엑셀으로 파일을 열어서 csv 파일로 저장한 후, 앞서 알아본 csv 파일로 불러오기 명령어를 사용한다.
(2) R에서 지원하는 패키지를 이용하여 직접 불러온다.
library(RODBC)
new <- odbcConnectExcel('엑셀 파일 경로')
yourdata <- sqlFetch(new, '시트 명')
close(new)
odbcConnectExcel : 엑셀 파일 경로
sqlFetch : 엑셀 파일 중에서 열고 싶은 시트 명 입력
4. R의 기초 함수
- 수열 생성 - 기초적인 수치 계산
# 수열 생성
- seq() -rep()
다양한 형태의 숫자들을 반복적으로 생성해주는 수열 생성 함수
-seq(a,b) : a부터 b 까지 1씩 증가하는 수열의 숫자 벡터 생성 ## a:b의 형태로 사용할 수 있음!
a:b = seq(a,b)
seq(1, 11, by = 2 ) : 1부터 11까지 by(2) 만큼 증가하는 수열 생성
[1] a a+1 a+2n ... b-n b
seq(a,b,length = m ) : a부터 b 까지 전체 수열의 개수가 m 개가 되도록 자동으로 생성 ## n = (b-a)/(m-1)
-rep(a, b) : a를 b만큼 반복하는 숫자 벡터 생성
rep( a:b , n ) : a~b 를 n번 반복하는 수열 생성
# 기초적인 수치 계산
- + - * / -행렬 연산 - 기술통계량
기본적인 사칙연산이 가능하다. 벡터와 벡터간 사칙연산을 수행할 때, 연산되는 벡터의 길이가 같아야 한다.
행렬 연산
- t() : 전치행렬
- %*% : 행렬곱
- (스칼라) * (행렬) : 스칼라곱
- solve() : 역행렬 연산
기술통계량
-mean() : 평균
-var() : 분산
-sd() : 표준편차
-sum() : 합
-median() : 중앙값
-log() : 자연로그 값
서로 다른 두 벡터에 대해
-cov() : 공분산
-cor() : 상관계수
Q. 공분산/ 상관계수 공분산은 X의 편차와 Y의 편차를 곱한것의 평균 / 상관계수는 공분산을 분산의 크기만큼 나눈 것 값의 분포를 나타낼 때, 분산을 사용한다.
확률 변수가 2개일 때, 확률 변수들의 분포를 확인하기 위해 공분산을 사용한다. 공분산은 변수간 상관관계를 파악할 때 사용한다. 가령, x 변수가 증가할 때, y 변수가 같이 증가하는지, 혹은 감소하는지, 혹은 아무 상관 없이 퍼져있는지(독립성) 확인할 수 있다.
공분산은 단위의 크기에 영향을 받는다는 단점이 있다. 이를 보완하는 것이 상관계수이다. 두 확률변수가 선형적이라면 상관계수는 1 이나 -1에 가까울 것이다. 두 확률변수가 독립적이라면 상관계수는 0에 가까울 것이다.
|
-summary() : 사분위수, 최소값, 최대값, 중앙값, 평균을 계산하여 보여줌.
5. R 데이터 핸들링
R은 객체지향 언어이기 때문에 변수(객체)를 불러오거나 변수 내의 요소들을 참조하는 것이 직관적이고 간단하다.
#벡터형 변수
b = c('a','b','c','d','e')
python 리스트 호출와 비슷하지만 R은 벡터의 인덱스가 1부터 시작한다
b[0] >> character(0)
b[1] >> "a" ## n 번째 원소만 불러오기
b[-1] >> 'b','c','d','e' ## -n : n번째 원소를 제외한 모든 원소 불러오기
b[c(2,3)] >> 'b' 'c' ## 여러개의 원소를 불러올 때는 c명령어를 사용한다!
#행렬 / 데이터 프레임 변수
[m,n] 의 형식으로 두 개의 숫자를 사용하여 불러오고자 하는 자료의 행과 열을 지정해야 함.
특정 행이나 특정 열을 제외하고 불러올 수 있으나
특정 원소만 제외하고 불러올 수는 엇ㅂ다.
6. 반복구분과 조건문
#for 반복문
a = c()
for (i in 1:9 ) #iteration
{a[i] = i*i } #sentence
a >> [1] 1 4 9 16 25 36 49 64 81
# while 반복문
x = 1
while ( x<5 ) #condition
{x = x + 1 } #sentence
# if else 조건문
if (condition) sentence
else sentence
7. 사용자 정의 함수
#function 명령어
#R
함수 이름 = function( x, y, z )
{ Algorithm }
#P
def 함수 이름 ( 인자1, 인자2, 인자3) :
Algorithm
8 기타 유용한 기능들
#paste : 입력받은 문자열을 하나로 붙여준다.
paste( a벡터 , b벡터 , seq = '-> ' )
>>a seq b
벡터 길이는 고려하지 않아도 됨.
#substr : 주어진 문자열에서 특정 문자열을 추출한다.
substr( " BigDataAnalysis " , 1, 4 )
>> [1] "BigD"
concountry = c('Korea','Japen','China','Singapore')
substr(country, 1, 3)
>> [1] "Kor" "Jap" "Chi" "Sin"
#자료형 데이터 구조 변환
as.data.frame(a)
as.list(a)
as.matrix(a)
as.vector(a)
as.factor(a)
as.integer(a)
as.numeric(a)
as.logical(a)
...
# 문자열을 날짜로 변환
as.Date() 를 이용하여 날짜로 변환할 수 있다.
이때, as.Date() 함수는 yyyy-mm-dd 형식을 가정한다. 따라서 다른 형식을 처리하기 위해 format = 옵션을 사용해야 한다.
Sys.Date() # 현재 날짜 반환
as.Date(x, format = "%m/%d/%Y" )
%a 요일
%b m %m mm
%d dd
%y yy %Y yyyy
#날짜를 문자열로 변환
format ( 데이터 , 포멧 )
as.character(데이터)
9 시각화
- 산점도 그래프 - 산점도 행렬 - 히스토그램과 상자그림
#산점도 그래프
산점도: x변수와 y 변수를 평면에 점을 찍어 표현한다. 3차원 공간에 찍을 수도 있고 기준선을 추가할 수도 있다.
# x에 대한 y 의 그래프 그리기
plot(x,y) = plot(y~x)
#산점도 행렬
여러가지 변수들에 대한 각각의 산점도를 한눈에 살펴볼 수 있다.
pairs( iris[1:4] , main = "Anderson's Iris Data -- 3 species",
+ pch = 21, bg = c("red", "green", "blue")[unclass(iris$Species)] )
main : 그래프 이름
pch : 그래프 상에 찍히는 점의 모양 변경
bg : 색상 지정
[iris $ Species ] : 데이터셋 $ 변수 명
# 히스토그램과 상자그림
#히스토그램
hist(data , prob = T )
#상자 그림
boxplot(data)
prob = T : 상대 도수 표시
'오늘의 코딩 > R' 카테고리의 다른 글
[R] R 개요 (0) | 2020.02.17 |
---|---|
우분투18에 R 설치하기 (0) | 2020.02.17 |