사용할 데이터는 Revolution 폴더안의 Sample Data로, "mortDefaultSmall2009"와 "mortDefaultSmall2008"라는 이름의 csv파일이다.
데이터의 각 행 수는 10000개 이고, 'creditScore', 'houseAge', 'yearsEmploy', 'ccDebt', 'year', 'default' 로 총 6개의 변수(열)를 가지고 있다.
# (1-1)data의 위치지정 Revolution R을 다운할 시, 자동으로 생성되는 Sample
# data중 하나인 데이터로, sampleData폴더의 'mortDefaultSmall2009'과
# 'mortDefaultSmall2008' csv파일을 사용
mort2008 <- "C:/Revolution/R-Enterprise-6.1/R-2.14.2/library/RevoScaleR/SampleData/mortDefaultSmall2008.csv"
mort2009 <- "C:/Revolution/R-Enterprise-6.1/R-2.14.2/library/RevoScaleR/SampleData/mortDefaultSmall2009.csv"
# (1-2)rxImport를 사용한 data import 이 경우에 outFile을 Null로 하였으므로
# outFile은 xdf파일이 아닌 Data Frame형식의 파일로 생성됨
mort2008 <- rxImport(inData = mort2008, overwrite = TRUE)
mort2009 <- rxImport(inData = mort2009, overwrite = TRUE)
# (1-3)rxDataStep을 사용한 Data Transformation
sample1 <- rxDataStep(inData = mort2008, varsToKeep = c("ccDebt", "houseAge"),
rowSelection = default < 1)
# (1-4)rxGetInfo를 사용한 변수정보 보기
rxGetInfo(sample1, getVarInfo = TRUE)
## Data frame: sample1
## Number of observations: 9852
## Number of variables: 2
## Variable information:
## Var 1: ccDebt, Type: integer, Low/High: (0, 11564)
## Var 2: houseAge, Type: integer, Low/High: (0, 40)
# (1-5) 위 예제의 (1-1)에서 이미 2008년, 2009년의 두 개의 데이터를
# 불러왔으므로, 바로 데이터를 합치는 작업시행 (두 개의 Data Frame형식의
# 파일을 합치기)
mort_Merge <- rxMerge(inData1 = mort2008, inData2 = mort2009, matchVars = c("creditScore",
"yearsEmploy"), type = "union")
# (1-6) rxGetInfo를 사용하여 데이터가 잘 합쳐졌나 확인
rxGetInfo(mort_Merge, getVarInfo = TRUE)
## Data frame: mort_Merge
## Number of observations: 20000
## Number of variables: 6
## Variable information:
## Var 1: creditScore, Type: integer, Low/High: (499, 880)
## Var 2: houseAge, Type: integer, Low/High: (0, 40)
## Var 3: yearsEmploy, Type: integer, Low/High: (0, 14)
## Var 4: ccDebt, Type: integer, Low/High: (0, 12823)
## Var 5: year, Type: integer, Low/High: (2008, 2009)
## Var 6: default, Type: integer, Low/High: (0, 1)
rxGetInfo를 사용하여 보니, 데이터가 총 20,000 rows라고 나온다.
따라서, Merge가 잘 되었음을 확인할 수 있다.
# 위 예제의 (1-5)에서 생성한 'mort_Merge' 데이터를 사용. (1-7) rxSort를
# 사용하여 데이터 정렬하기
mort_Sort <- rxSort(inData = mort_Merge, outFile = "Sortsample.xdf", sortByVars = "creditScore",
type = "varByVar", overwrite = TRUE)
# (1-8) rxReadXdf를 사용하여 Sort된 데이터 확인
rxReadXdf(mort_Sort, numRows = 10)
##
Rows Processed: 10
## Time to read data file: less than .001 secs.
## Time to convert to data frame: less than .001 secs.
## creditScore houseAge yearsEmploy ccDebt year default
## 1 499 15 4 4789 2009 0
## 2 515 13 5 3635 2008 0
## 3 519 30 4 3949 2008 0
## 4 520 8 2 6787 2008 0
## 5 520 15 4 7389 2009 0
## 6 526 8 4 6327 2008 0
## 7 529 15 4 6376 2008 0
## 8 530 23 6 5031 2008 0
## 9 531 26 8 3344 2008 0
## 10 533 9 8 7154 2008 0
결과로 나온 10개의 데이터를 확인해 보면, 위에서 정렬 기준으로 정한 변수인 'creditScore'를 기준으로 오름차순으로 정렬되었음을 확인할 수 있다.
rxDataStep(inData = NULL, outFile = NULL, varsToKeep = NULL, varsToDrop = NULL, rowSelection = NULL, transforms = NULL, transformObjects = NULL, transformFunc = NULL, transformVars = NULL, transformPackages = NULL, transformEnvir = NULL, append = “none”, overwrite = FALSE, removeMissings = FALSE, computeLowHigh = TRUE, maxRowsByCols = 3000000, rowsPerRead = -1, startRow = 1, numRows = -1, returnTransformObjects = FALSE, blocksPerRead = rxGetOption(“blocksPerRead”), reportProgress = rxGetOption(“reportProgress”), xdfCompressionLevel = rxGetOption(“xdfCompressionLevel”), …)
rxDataStepXdf(inFile, outFile, varsToKeep = NULL, varsToDrop = NULL, rowSelection = NULL, transforms = NULL, transformObjects = NULL, transformFunc = NULL, transformVars = NULL, transformPackages = NULL, transformEnvir = NULL, append = “none”, overwrite = FALSE, removeMissings = FALSE, computeLowHigh = TRUE, rowsPerRead = -1, startRow = 1, numRows = -1, startBlock = 1, numBlocks = -1, returnTransformObjects = FALSE, blocksPerRead = rxGetOption(“blocksPerRead”), reportProgress = rxGetOption(“reportProgress”), xdfCompressionLevel = rxGetOption(“xdfCompressionLevel”), checkVarsToKeep = TRUE, userObjects = NULL, cppInterp = NULL)
rxMerge( inData1, inData2, outFile = NULL, matchVars = NULL, type = “inner”, missingsLow = TRUE, autoSort = TRUE, duplicateVarExt = NULL, varsToKeep1 = NULL, varsToDrop1 = NULL, newVarNames1 = NULL, varsToKeep2 = NULL, varsToDrop2 = NULL, newVarNames2 = NULL, rowsPerOutputBlock = -1, decreasing = FALSE, overwrite = FALSE, maxRowsByCols = 3000000, bufferLimit = -1, reportProgress = rxGetOption(“reportProgress”), verbose = 0, xdfCompressionLevel = rxGetOption(“xdfCompressionLevel”), … )
rxMergeXdf( inFile1, inFile2, outFile, matchVars = NULL, type = “inner”, missingsLow = TRUE, duplicateVarExt = NULL, varsToKeep1 = NULL, varsToDrop1 = NULL, newVarNames1 = NULL, varsToKeep2 = NULL, varsToDrop2 = NULL, newVarNames2 = NULL, rowsPerOutputBlock = -1, decreasing = FALSE, overwrite = FALSE, bufferLimit = -1, reportProgress = rxGetOption(“reportProgress”), verbose = 0, xdfCompressionLevel = rxGetOption(“xdfCompressionLevel”), … )
rxSort(inData, outFile = NULL, sortByVars, decreasing = FALSE, type = “auto”, missingsLow = TRUE, caseSensitive = FALSE, varsToKeep = NULL, varsToDrop = NULL, overwrite = FALSE, maxRowsByCols = 3000000, bufferLimit = -1, reportProgress = rxGetOption(“reportProgress”), verbose = 0, xdfCompressionLevel = rxGetOption(“xdfCompressionLevel”), …)
rxSortXdf(inFile, outFile, sortByVars, decreasing = FALSE, type = “auto”, missingsLow = TRUE, caseSensitive = FALSE, varsToKeep = NULL, varsToDrop = NULL, overwrite = FALSE, bufferLimit = -1, reportProgress = rxGetOption(“reportProgress”), verbose = 0, xdfCompressionLevel = rxGetOption(“xdfCompressionLevel”), blocksPerRead = -1, …)
Hankuk University of Foreign Studies. Dept of Statistics. Daewoo Choi Lab. Yeeseul Han.
한국외국어대학교 통계학과 최대우 연구실 한이슬
e-mail : han.lolove17@gmail.com