# dplyrのロード。初めて利用する場合は、事前に当該パッケージをインストールしてください。
library(dplyr)
# 「sep="\t"」でTab区切りファイルを読み込み。
# 「FLAT_CMPL.txt」にはフィールド名が記載されていないので、最初のレコードをフィールド名として
# 読み込まないように「header = FALSE」を指定する。
# デフォルトのFactorデータで読み込むと重くなる。今回は、ローデータ抽出が目的のため、
# 「stringsAsFactors = FALSE」とする。
master.df <- read.csv("FLAT_CMPL.txt",sep="\t",header = FALSE,stringsAsFactors = FALSE)
# 下記にフィールド定義が記載されています
# https://www-odi.nhtsa.dot.gov/downloads/folders/Complaints/Import_Instructions.pdf
# 先ほど読み込んだデータフレームのフィールド名を上書き。
colnames(master.df) <- c("CMPLID","ODINO","MFR_NAME","MAKETXT","MODELTXT","YEARTXT","CRASH","FAILDATE","FIRE","INJURED","DEATHS","COMPDESC","CITY","STATE","VIN","DATEA","LDATE","MILES","OCCURENCES","CDESCR","CMPL_TYPE","POLICE_RPT_YN","PURCH_DT","ORIG_OWNER_YN","ANTI_BRAKES_YN","CRUISE_CONT_YN","NUM_CYLS","DRIVE_TRAIN","FUEL_SYS","FUEL_TYPE","TRANS_TYPE","VEH_SPEED","DOT","TIRE_SIZE","LOC_OF_TIRE","TIRE_FAIL_TYPE","ORIG_EQUIP_YN","MANUF_DT","SEAT_TYPE","RESTRAINT_TYPE","DEALER_NAME","DEALER_TEL","DEALER_CITY","DEALER_STATE","DEALER_ZIP","PROD_TYPE","REPAIRED_YN","MEDICAL_ATTN","VEHICLES_TOWED_YN")
# 取り込み直後は、782,115 records。
# 「Ctrl+Shift+M」でpipe演算子(`%>%`)を挿入
# マスターのデータフレーム(master.df)から3%を無作為抽出し、別のデータフレーム
# (sample_3_percent.df)に書き出す。今回は3%で指定するため、23,463 recordsとなる。
sample_3_percent.df <- master.df %>% sample_frac(0.03)
# CSVファイルとして書き出し
write.csv(sample_3_percent.df,"sample_3_percent.csv")