From 0c9a0d9b123bfaab1275eb4492e01f0e9297b562 Mon Sep 17 00:00:00 2001 From: Layik Hama Date: Sat, 27 Jul 2024 10:02:55 +0100 Subject: [PATCH] Attempt addressing #235 --- R/read.R | 28 ++++++++++++++++++++++++++-- data-raw/stats19_variables.csv | 6 +++--- data/stats19_variables.rda | Bin 2226 -> 1969 bytes 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/R/read.R b/R/read.R index 7bdfe3b..de8d2f0 100644 --- a/R/read.R +++ b/R/read.R @@ -47,7 +47,7 @@ read_collisions = function(year = NULL, } # read the data in suppressWarnings({ - ac = readr::read_csv(path) + ac = readr::read_csv(path, col_types = readr::cols(!!!col_types)) }) if(format) @@ -169,5 +169,29 @@ read_ve_ca = function(path) { read_null = function(path, ...) { if(is.null(path)) return(NULL) - readr::read_csv(path, ...) + readr::read_csv(path, col_types = readr::cols(!!!col_types), ...) } + +# possibly in utils +# Convert the 'type' column to readr's col_type format +convert_to_col_type <- function(type) { + switch(type, + character = readr::col_character(), + numeric = readr::col_double(), + integer = readr::col_integer(), + logical = readr::col_logical(), + date = readr::col_date(), + datetime = readr::col_datetime(), + readr::col_guess()) +} + +data("stats19_variables", package = "stats19") + +# Create a named list of column types +unique_vars = unique(stats19_variables$variable) +unique_types = sapply(unique_vars, function(v) { + type = stats19_variables$type[stats19_variables$variable == v][1] + convert_to_col_type(type) +}) + +col_types = setNames(unique_types, unique_vars) diff --git a/data-raw/stats19_variables.csv b/data-raw/stats19_variables.csv index 1070cfc..6daa074 100644 --- a/data-raw/stats19_variables.csv +++ b/data-raw/stats19_variables.csv @@ -43,7 +43,7 @@ Casualty,accident_index,unique value for each accident. The accident_index combi Casualty,accident_reference,"In year id used by the police to reference a collision. It is not unique outside of the year, use accident_index for linking to other years",accident_reference,character Casualty,accident_year,NA,accident_year,numeric Casualty,age_band_of_casualty,NA,age_band_of_casualty,character -Casualty,age_of_casualty,NA,age_of_casualty,character +Casualty,age_of_casualty,NA,age_of_casualty,numeric Casualty,bus_or_coach_passenger,NA,bus_or_coach_passenger,character Casualty,car_passenger,NA,car_passenger,character Casualty,casualty_class,NA,casualty_class,character @@ -73,8 +73,8 @@ Vehicle,accident_index,unique value for each accident. The accident_index combin Vehicle,accident_reference,"In year id used by the police to reference a collision. It is not unique outside of the year, use accident_index for linking to other years",accident_reference,character Vehicle,accident_year,NA,accident_year,numeric Vehicle,age_band_of_driver,NA,age_band_of_driver,character -Vehicle,age_of_driver,NA,age_of_driver,character -Vehicle,age_of_vehicle,NA,age_of_vehicle,character +Vehicle,age_of_driver,NA,age_of_driver,numeric +Vehicle,age_of_vehicle,NA,age_of_vehicle,numeric Vehicle,driver_home_area_type,field introduced in 1999,driver_home_area_type,character Vehicle,driver_imd_decile,field introduced in 2016,driver_imd_decile,character Vehicle,engine_capacity_cc,NA,engine_capacity_cc,character diff --git a/data/stats19_variables.rda b/data/stats19_variables.rda index ac2ff5c97952c904b72726c08ca018e1c5aea77e..c6170dc2ae5fe16f55ad3aefba435f536b9ffe63 100644 GIT binary patch literal 1969 zcmV;i2Tu4OiwFP!000001MOSed)u}ZS8O?r(>RWui<91lw%eMlt}HvfIa|A4lC;^n zWNXqkyK)c-iHJx-13)R-OZ(pEzV>bZ<-WQeYY;-atg$XOML9Aw8-!O9IfAC8pA&(<{}9E|&@( z3mSNSM3rl4tyG_+ai?JXi92cHYc3Mc7m1c4vh}M)eZVy3uKLI)RCApM&g&Bq?}get z8*roT+B+KwpGF={btudLc>z~ia^Ly6QI&_Vg8{PQ=c-~@u9`S)bTSVaRhlO~PpF>j z)|o<>2&u!0bU6}9uiTAukrK2#oSu8$DxAs(&8YbKTE>~{>-t1C%(>_!FAiA1jMEgu zD}_?Vk1&mCb+liZr#J}5iko5RQlCe>)Z#Hqims3aDL1mYRjGtFo1Kv5OsvO)g2aj$ zrCF-1mjzQ?c}5MG&*9L-I{4@*J|QtQSl~rG=5Csrn#WGOs%4t=bIaX`_FROdvV)Eb z>B&@@X_t&TXGV}qV+;Fvx*gx>MB+U%1x9QT8WLa zC>BE&PnM&XN}_DmW6BdOU=(h6BO&`mzgHEzJ7)yfY(&j^e=or!=f#7&c+3ejyQ^pF zCS(4{yRu%Ucp&+3!c|M~smkNFayYdipU!pWGj+`hXL*Vs;Mmf9I>2gY=NBt}U~Wl07jmd~?l9jBiC5Z$-D*}+!0tLnZ9y+v+?j7-M~@kQJL z?-bExnTZL4-jZ_sAeA6m7`ri{#I|+qa*JHk#HR`AFp?@37@a#HtNFCKX=bW&2CAJs zC}+REmXNF&9^{X8#+eU!(qtYkNQKsX5k=etYStQ8BoW%VAX2U1BoW=rfHAshOjf&U z1|;H1A3b1h*9$J4?e8mn=45#%4QPyf+FiB zB8kQ=a+5J~BRj5S19LrF8E8aqYJ5Yc?kjTs#`T*QNH67q$pkKuQ0sxZw6!%Fjao?Y zT0JprrTwj#A^#6VBzohm9uqxDkrQvFefJ$1@fHq3DpiH_fCl{XPJ8oWd-L`7<{RzJ zH`|+UwF$Pij1{KSCNRLZEc+!{_G<=%4AKrLN9@@~-GB1zj?m>S3J5nRgdp{q`AW8T zcVDmQJyua!J6o@J_YALlF@E=l zcb~*`oQ-~N4t*;-)j_ez3kD z+=n}k`hKv!AFS^O_v?Oe*$=4%Hzxo8Zyze2!WL*4c93n<6?Me}P_Cxr&oibUaNd8S zy?9b8rr%}3`D)ZkXl&kLX{-PXU*XT*-rlzr#U-a?cCIB?sm<#zws6F~4r9yBL`)7? zzKGHor&?MZs+##uIMvAEo)qc8y-u@WTWh)o?(_P?z5m;MZm(&(`0K32-2S4iH?Qs- zHjfy)#ui{+26`GeW}iC_tXiMefOWvwJq4Tw&Hx+0S>PP-4Dc-Q9Pm8w0`Lof051YB z0WSl;1b$`xTCuiX0nP&#fZqVG0-L~VKnvIc+Q2rj16%~mJ^UMh`8Dw^;B8Y%d1K>m8veh;IUIDHG9|0c&*ML6&e*``O{sdeHZUBD<{sMdo z+yrg`p8=l(UjVm(zXE>){to;D_$Tl$zytmb(1yv2D%2a;q{%qds0#D*W?S^<9s#-8{d5oT1Gbf^fmwh D102w} literal 2226 zcmV;j2u=4wT4*^jL0KkKS-9MfT>uKM|M36+|NsC0|NsC0|NsC0|M0*F0s#U500rO+ zKPuJ$1poj50000000L1ZGeQ6~G|&cvL7)Ht0017K&;S4c0iX_=GGHbE000000Wbgn z00_ch001KN63^)gIqaQRY3|6d%WuIENNXv+r{+1+c&y9_TT`kX33$v|=1(IS2SPYLL#y*_Ox z!+T6BC(@(+X^loII$MtS$UjsdC=Is){tO(54-g4;1WDx(cs-qCC;R*y^_qH=4+SK6 zX&$X7i;~IfQh4beN=M95DU>PHs8StE>Z-RzVv!WBuCIAvEbOteWJ@*{mbTXS7FRb{ zY+W?@cJb)P&)`7>0u(rrK_ZPFM43|NO`Sf48dU04tzN~OUtf0aUA_2Z0&(Xc!2>_b zllm~?0TokSwP4bOR1vSvhkmZv{P<}I)lx|$H&h=BW}0wTRZ~B^Z2k;$qDqbWL_fa1 z^o3X9WssRvkA{#{LaIe$VN~GVn_b$*DmGD~nig5Qj9Z_OGBRxV7iQIEoVwO4rPwUt zLds~=U2{f9TLuP?zPiuE!OYRKCQVo}Xvw~N>dB*#i#0Cvth*MhnfhP3W=fU&dK@Tp zV|;9mx+IgkAd;#iB~*z~AUdi`NlGYQmZXT1)JY_dHGP^%A&jJur4r7 z>9x8jog~XN#G!t&QfG}P#7u(Zp(^CX+`FelEN>>8&iOTv*ozy9_We(>k;@yT(}g9a zs&6$yqS+kYtWlX&Sr!~@a#Dxy>5($n(9oB^@7_y(%nG;5X-&40IR3|+;-WFw;G-};C#u89f7iN-2 z=4+yIF&RbK$<|$iibW+7sVJDa3t*(lQh9nW{I<>7l$pO&b5mtOU z{@3DWcaDV`B`!^!icd;~`(Bn03&zd$HchEEe}s_bL{Ab&N{phev1dGYKtl1UVI56MKxxi&=@=A#0ZNh5i3lzAo##KNL@n8>88DGDxNb{JiCic2O6 zOBVMZVZC=toUy#R&_h&RsEVI?<5-s&Ssw$w`yFg#=6edRds^12l206Uqk5RJU2^92 zlSXC*F2&qj_FUxV$nuk{qGU_sA!#%)xklE+(n8W07v6df3$+xX=v{%iOjwh(6qasI z$qz&h>(0s1IgQ8VH5N9LqR3_3U1WWln=?pk>VHg0eztQHz#Bqy8xSX@s{I=ncw`_-XPAW+vpLCaz zIZ{aRVABWF`5z+ql$?&%cr7$L5xq$~6*G1&DeEMWwkb?DJP%{O)Y=Ganj2{tYP|0* zoQ6zgnMu-=D3(NVc*)e@e8(%u<#BLX91ZR+Nil{gQ6}OVj#R|aG1n8wv7;6P3|w6Y zI*8^rL#g6>&spj^`P~hd=3s3e7WZ+gn)F3T!A|3wyxuwFr_`p&b45gzxU`8fFJ`vf zEzZTlI3CsYZjBEs-F$45%=#-b`OO{o5R5vM>m@TXQHxgquN=Rf~poTY6_Ipz}OIdx9O$;H8unRIs%<#07(iZ!G$+k@+DPOy?RXAWULDRcHFBpS?kpUQc}zQ%!n{0PtEt(N z>MpaJPD6eXF{^EJ9xC8V9A4wdx<>O8y!~bwoo-hHLgR_#Z1&cA7`^9QjmC~-=C%sy zMHIA2H##_Cw2=DBbtO+|H$u`LXR5_?MrM{>Wr(7iD2jNS-u6Gv`c3(^Y}wsmd{q)f z4plm0D8bO--cA>8cV62DaNJUoiYpOQb95x8K1U4h9Fi>UYp(*G%bboxixmk^}=bv~?Y<#dy8oSoP{QhdEh)ZC}E>0Qv^{T9fW=$Rdg zz>j;a=ly=hEEOZ^DfCqQ&sk@kC!sTMYEA{5j~d?Q3D~83jTp&F$HkIJ%eoCk605!4 zES;|wS4@