일단 데이터가 분석을 위해서 읽어들여지면, 우리는 분석에 착수하는 데 필요한 흥미롭거나 연관 있어 보이는 특성(feature)들에 대해 생각하는 것을 시작할 수 있습니다. 우리의 목표는 주로 탐색(exploratory)입니다. 우리는 데이터를 기반으로 한 이야기를 하고 싶은 것입니다. 이러한 의미에서, 데이터에 포함된 어떠한 정보라도 유용할 수 있습니다. 더하여, 기존 데이터 요소에서 새로운 정보 (또는 특성)를 추출할 수 있습니다. 어떤 특성을 추출할 지에 대하여 고려하는 것 뿐만 아니라, 해당 열의 데이터 유형이 무엇인지도 잘 생각해야 이후에 분석을 적절하게 실행할 수 있습니다. 첫 번째 예로서, 팁을 지불한 승객의 비율을 추출하기 위한 간단한 변환을 살펴 보겠습니다.
여기서 우리는 앞으로 여러 번 다시 사용하게 될 rxDataStep 함수를 처음 만나게 됩니다. rxDataStep은 변환 작업에서는 필수적인 함수이며, (rxMerge, rxSort와 함께) RevoScaleR에서 가장 중요한 데이터 변환 함수 입니다. 그 밖의 다른 대부분의 분석 함수들은 데이터의 요약 및 모델링 함수들 입니다. rxDataStep을 사용하여 다음을 수행할 수 있습니다.
- 기존 열 수정 또는 데이터에 새 열 추가
- 새 파일에 쓰기 전에 데이터에서 특정 열 유지 또는 삭제
- 새 파일에 쓰기 전에 데이터의 특정 행 유지 또는 삭제
로컬 컴퓨팅 컨텍스트에서 rxDataStep을 실행할 때에는 data.frame 또는 CSV 또는 XDF 파일을 지정할 수 있는 inData 인수를 지정합니다.(나중에 계산 컨텍스트를 SQL Server 또는 HDFS로 변경하여 원격 분산 컴퓨팅 컨텍스트에서의 데이터 변환을 실행할 수 있습니다.) 또한 출력 할 파일을 지정하는 outFile 인수는, inData와 outFile이 모두 동일한 파일을 지정하는 경우에는 반드시 overwrite = TRUE로 설정하여야 합니다. ** outFile은 선택적 인수입니다.이 인수를 생략하면 결과가 data.frame 형식으로 출력됩니다. 그러나 대부분의 경우 이는 우리가 원하는 것이 아니므로 outFile을 지정할 필요가 있습니다. **
팁이 지불된 비율을 계산하기 위한 간단한 변환부터 시작해 보겠습니다.
rxDataStep(nyc_xdf, nyc_xdf,
transforms = list(tip_percent = ifelse(fare_amount > 0 & tip_amount < fare_amount, round(tip_amount*100 / fare_amount, 0), NA)),
overwrite = TRUE)
rxSummary( ~ tip_percent, nyc_xdf)
Rows Processed: 69406520
Call:
rxSummary(formula = ~tip_percent, data = nyc_xdf)
Summary Statistics Results for: ~tip_percent
Data: nyc_xdf (RxXdfData Data Source)
File name: yellow_tripdata_2016.xdf
Number of valid observations: 70710614
Name Mean StdDev Min Max ValidObs MissingObs
tip_percent 13.97823 11.87074 -1 100 70596806 113808
위에서 요약을 얻는 것과는 약간 다른 방법이 있습니다. 앞서의 rxDataStep 문 대신에 rxSummary에서 직접 변환을 수행할 수 있습니다. 이 두 번째 방법에서는, 변환은 데이터를 별도로 생성하여 기록하지 않은 상태에서 rxSummary에 의해 실행 중에 수행됩니다. IO 오버 헤드가 낮기 때문데, 이 두 번째 방법은 단일 실행에서 보다 효율적입니다. RevoScaleR의 모든 요약 함수 및 분석 함수에서 다음과 같이 새로운 열을 실행 중에 만들어 낼 수 있습니다.이는 변환이 데이터의 기존 열에서 파생된 직접적인 변환인 경우 특히 유용합니다. 다음 예제에서는 rxCrossTabs 내에서 변환을 실행하여, (현재 문자열로 저장 되어 있는)tpep_pickup_datetime에서 데이터의 월 및 연도를 가져옵니다. 그런 다음 rxCrossTabs를 통하여 각 연도와 월의 조합(combination)된 수를 제공할 수 있도록, 월 및 데이터를 factor 열로 변환합니다.
이는 변환이 데이터의 기존 열에서 파생된 직접적인 변환인 경우 특히 유용합니다. 다음 예제에서는 rxCrossTabs 내에서 변환을 실행하여, (현재 문자열로 저장 되어 있는)tpep_pickup_datetime에서 데이터의 월 및 연도를 가져옵니다. 그런 다음 rxCrossTabs를 통하여 각 연도와 월의 조합(combination)된 수를 제공할 수 있도록, 월 및 데이터를 factor 열로 변환합니다.