Install for R
on mac
download page 에서 다운을 받는다.
사용방법
libarary확인
> library()
System package path
> .libPaths()
Install package
from CRAN(Comprehensive R Archive Network) network
> install.package("package-name")
manual install package
> install.packages("ggplot2", lib = "/data/Rpackages/")
> library(ggplot2, lib.loc="/data/Rpackages")
Data format
값 할당은 <-을 사용하거나 =을 사용한다
값 확인은 print 혹은 변수명을 prompt에 적는다.
> a <- "hello" (character)
> b <- 2.5 (numberic)
> c <- 6L (integer)
> d <- 1 + 2i (complex, 복소수)
> e <- TRUE (logical)
Vector
동일한 유형의 데이터가 1개 이상 존재하는 1차원 데이터 구조
> first <- "boy"
> second <- "girl"
> c(first, second)
[1] "boy" "girl"
> thirth <- "dog"
> vectorValue <- c(first, second, thirth)
> vectorValue
[1] "boy" "girl" "dog"
List
다양한 유형의 데이터를 담을 수 있는 구조
> listValue <- list("listSample", c(first, second), vectorValue)
> listValue
[[1]]
[1] "listSample"
[[2]]
[1] "boy" "girl"
[[3]]
[1] "boy" "girl" "dog"
> print(listValue)
[[1]]
[1] "listSample"
[[2]]
[1] "boy" "girl"
[[3]]
[1] "boy" "girl" "dog"
List속에서 값 추출하기
보통 배열의 index가 0부터 시작하는 것과 다르게 1부터 시작한다.
> listValue <- list("listSample", c(first, second), vectorValue)
> listValue[0]
list()
> listValue[1]
[[1]]
[1] "listSample"
> listValue[2]
[[1]]
[1] "boy" "girl"
> listValue[3]
[[1]]
[1] "boy" "girl" "dog"
Matrix
2차원 데이터의 집합으로 벡트로 구성되어 있다.
> mtrx = matrix(c(1,2,3,4,5,6,7,8,9,10), nrow=2, ncol=5)
> mtrx
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
Array
데이터를 어떤걸 넣어도 되는것 같다. 보통은 array에 matrix을 넣어서 다차원 배열로 활용한다.
형태 : array(vector value, dim = c(row, col, size))
> arr = array(c(4, 5), dim = c(3, 3, 2))
> arr
, , 1
[,1] [,2] [,3]
[1,] 4 5 4
[2,] 5 4 5
[3,] 4 5 4
, , 2
[,1] [,2] [,3]
[1,] 5 4 5
[2,] 4 5 4
[3,] 5 4 5
> arr2 = array(c(1, 2, 3), dim = c(2, 4, 3))
> arr2
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 3 2 1
[2,] 2 1 3 2
, , 2
[,1] [,2] [,3] [,4]
[1,] 3 2 1 3
[2,] 1 3 2 1
, , 3
[,1] [,2] [,3] [,4]
[1,] 2 1 3 2
[2,] 3 2 1 3
Factor
벡터를 이용해 생성하는 R객체. factor을 사용하면 라벨링을 해준다. 라벨링은 통계적 모델링에 유용하게 쓰인다고 한다.
> factValue = c(1, 1, 2, 3, 4, 5, 5)
> fact = factor(factValue)
> fact
[1] 1 1 2 3 4 5 5
Levels: 1 2 3 4 5
> nlevels(fact)
[1] 5
데이터프레임
데이터프레임은 표 형태의 데이터 객체로 matrix와 다르게 여러 형식의 데이터를 포함할 수 있다.
데이터 프로엠은 동일한 길이를 갖는 벡터 리스트이다.
사용방법은 data.frame() function을 이용한다.
> dataFrame = data.frame( stockItem = c("samsung", "lg", NA), price = c(50000, 30000, 10000) )
> dataFrame
stockItem price
1 samsung 50000
2 lg 30000
3 <NA> 10000
외부 데이터 읽기
파일을 읽기 위해서는 읽을 파일이 있는 경로로 현재 작업 디렉토리를 이동시켜야한다. (using setwd() function)
csv data읽기
> csvData = read.csv("rdatasample.csv")
> csvData
Symbol Name Price..Intraday. Change X..Change Volume Avg.Vol..3.month. Market.Cap PE.Ratio..TTM.
1 BAC Bank of America Corporation 28.84 -0.24 -0.83% 41.672M 73.494M 278.559B 11.05
2 ECA Encana Corporation 6.98 -0.31 -4.25% 33.594M 31.332M 10.294B 6.29
3 MU Micron Technology, Inc. 37.93 -2.06 -5.15% 44.89M 35.515M 42.521B 3.13
4 WBA Walgreens Boots Alliance, Inc. 61.10 -2.30 -3.63% 15.393M 6.301M 57.644B 11.24
5 CELG Celgene Corporation 86.58 0.33 0.0038 10.068M 11.274M 60.793B 15.71
6 MS Morgan Stanley 41.62 -0.28 -0.67% 7.063M 13.907M 71.12B 8.80
7 DAL Delta Air Lines, Inc. 49.71 -0.01 -0.02% 8.703M 8.074M 33.631B 8.77
8 ET Energy Transfer LP 14.85 -0.10 -0.67% 9.925M 14.027M 38.898B 12.83
9 AKS AK Steel Holding Corporation 2.79 -0.16 -5.42% 13.572M 11.06M 882.502M 4.73
10 WTW Weight Watchers International, Inc. 20.79 -0.14 -0.67% 3.734M 4.033M 1.392B 6.52
11 BBD Banco Bradesco S.A. 10.98 -0.33 -2.96% 12.04M 13.239M 70.243B 15.69
12 X United States Steel Corporation 20.58 -1.32 -6.03% 11.275M 9.583M 3.565B 3.29
13 DNR Denbury Resources Inc. 1.76 -0.07 -3.83% 14.363M 11.761M 794.615M 2.48
14 WDC Western Digital Corporation 48.12 -2.62 -5.16% 7.916M 7.251M 13.996B 17.60
> is.data.frame(csvData)
[1] TRUE
> write.csv(csvData, "cvsData.cvs")
xlsx data 읽기
xlsx을 설치해야한다. install.packages("xlsx")
tar: Failed to set default locale 이 뜬다면,
system('defaults write org.R-project.R force.LANG en_US.UTF-8') 을 입력하고 R studio 재시작한다.
library(xlsx) 을 할때 package or namespace load failed for ‘xlsx’: 이 뜬다면
JRE을 다운받아야한다.
그런데 평소에도 jvm을 써왔다면 터미널에서 $ sudo r 로 들어가서 library(xlsx)을 확인해보자
필자는 root권한으로 실행하니 잘 동작하였다.
(mac의 R studio에서 library(xlsx)을 실행시키는데 난관이 많다. 그냥 터미널로 꼐속 진행한다...)
> exceldata = read.xlsx("rdatasample.xlsx", sheetIndex = 1)
> exceldata
Symbol Name Price..Intraday. Change X..Change
1 BAC Bank of America Corporation 28.84 -0.24 -0.0083
2 ECA Encana Corporation 6.98 -0.31 -0.0425
3 MU Micron Technology, Inc. 37.93 -2.06 -0.0515
4 WBA Walgreens Boots Alliance, Inc. 61.10 -2.30 -0.0363
5 CELG Celgene Corporation 86.58 0.33 0.0038
6 MS Morgan Stanley 41.62 -0.28 -0.0067
7 DAL Delta Air Lines, Inc. 49.71 -0.01 -0.0002
8 ET Energy Transfer LP 14.85 -0.10 -0.0067
9 AKS AK Steel Holding Corporation 2.79 -0.16 -0.0542
10 WTW Weight Watchers International, Inc. 20.79 -0.14 -0.0067
11 BBD Banco Bradesco S.A. 10.98 -0.33 -0.0296
12 X United States Steel Corporation 20.58 -1.32 -0.0603
13 DNR Denbury Resources Inc. 1.76 -0.07 -0.0383
14 WDC Western Digital Corporation 48.12 -2.62 -0.0516
15 <NA> <NA> NA NA NA
Volume Avg.Vol..3.month. Market.Cap PE.Ratio..TTM.
1 41.672M 73.494M 278.559B 11.05
2 33.594M 31.332M 10.294B 6.29
3 44.89M 35.515M 42.521B 3.13
4 15.393M 6.301M 57.644B 11.24
5 10.068M 11.274M 60.793B 15.71
6 7.063M 13.907M 71.12B 8.80
7 8.703M 8.074M 33.631B 8.77
8 9.925M 14.027M 38.898B 12.83
9 13.572M 11.06M 882.502M 4.73
10 3.734M 4.033M 1.392B 6.52
11 12.04M 13.239M 70.243B 15.69
12 11.275M 9.583M 3.565B 3.29
13 14.363M 11.761M 794.615M 2.48
14 7.916M 7.251M 13.996B 17.60
15 <NA> <NA> <NA> NA
> write.xlsx(exceldata, "result.xlsx")
URL에서 데이터 받아오기
웹에서 csv 형식으로 데이터를 준다면 url을 채로 데이터를 받을 수 있다.
> url = "csv file url"
> urldata = as.data.frame(read.csv(url))
데이터베이스
관계형 데이터베이스, mySQL과 연결해서 사용할 수 있다.
이것도 library.install하는데 수월하게 되진 않는다. 테스트 환경이 구축되지 않았으므로 패스
> mysqlconnection = dbConnect(MySQL(), user = '...', password = '...', dbname = '...', host = '...')
> dbListTables(mysqlconnection)
> result = dbSendQuery(mysqlconnection, "select * from <table name>)
> data.frame = fetch(result)
> data.frame