рд╕рд╛рдордЧреНрд░реА рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЬреЛ рдЖрд░ рднрд╛рд╖рд╛ рдХреЛ рд╕рд╛рд░рдгреАрдмрджреНрдз рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдЦрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрд░рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдХреНрд░реЙрд╕-рдХрдЯрд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ, рдбреЗрдЯрд╛ рдХреНрд▓реАрдВрдЬрд┐рдВрдЧ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдорд╛рдк рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдЪрд╛рд░реНрдЯ рдХреЛ рдкреНрд▓реЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ data.table, reshape2, stringdist, рдФрд░ ggplot2 рд╕рдВрдХреБрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдореЙрд╕реНрдХреЛ рдореЗрдВ рдЯреИрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдФрд░ рд╕рд╛рдорд╛рди рдХреЗ рдкрд░рд┐рд╡рд╣рди рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкрд░рдорд┐рдЯ рдХреА рдЬрд╛рдирдХрд╛рд░реА "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рд▓реА рдЧрдИ рдереАред рдкрд░рд┐рд╡рд╣рди рд╡рд┐рднрд╛рдЧ рдФрд░ рдорд╛рд╕реНрдХреЛ рдХреЗ рд╕рдбрд╝рдХ рдкрд░рд┐рд╡рд╣рди рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ред рдбреЗрдЯрд╛рд╕реЗрдЯ
рдбреЗрдЯрд╛.mos.ru/datasets/655 рдкреГрд╖реНрдард╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдореЗрдВ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рд╣реИ:
ROWNUM;VEHICLE_NUM;FULL_NAME;BLANK_NUM;VEHICLE_BRAND_MODEL;INN;OGRN 1;"248197";" ┬л-┬╗";"017263";"FORD FOCUS";"7734653292";"1117746207578" 2;"249197";" ┬л-┬╗";"017264";"FORD FOCUS";"7734653292";"1117746207578" 3;"245197";" ┬л-┬╗";"017265";"FORD FOCUS";"7734653292";"1117746207578" ```
1. рдкреНрд░рд╛рдердорд┐рдХ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рддреБрд░рдВрдд рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рд╕реЗ рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред
url <- "http://data.mos.ru/datasets/download/655" colnames = c("RowNumber", "RegPlate", "LegalName", "DocNum", "Car", "INN", "OGRN", "Void") rawdata <- read.table(url, header = TRUE, sep = ";", colClasses = c("numeric", rep("character",6), NA), col.names = colnames, strip.white = TRUE, blank.lines.skip = TRUE, stringsAsFactors = FALSE, encoding = "UTF-8")
рдЕрдм рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...
2. рдбреЗрдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд▓рд╛рдЗрд╕реЗрдВрд╕рдзрд╛рд░реА рдХреЗ рд╕рдВрдЧрдардирд╛рддреНрдордХ рд░реВрдк рдФрд░ рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЯреИрдХреНрд╕рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╡рд┐рддрд░рдг рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА FULL_NAME (рдмрджрд▓рд╛ рд╣реБрдЖ рд╡реИрдзрд╛рдирд┐рдХ рдирд╛рдо) рдФрд░ VEHICLE_BRAND_MODEL (рдХрд╛рд░) рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИред
рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
- LegalName рдлрд╝реАрд▓реНрдб рд╕реЗ, рдПрдХ рдЕрд▓рдЧ OrgType рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХрд╛рдиреВрдиреА рд░реВрдк рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
- рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ, рдПрдХ рдЕрд▓рдЧ CarBrand рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдорд╢реАрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
- рдЕрдкреНрд░рдпреБрдХреНрдд рдЦреЗрддреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред
рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд▓реАрдЧрд▓рдиреЗрдо рдФрд░ рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдкрд╣рд▓реЗ рд╢рдмреНрдж рдХреНрд░рдорд╢рдГ, рдХрд╛рдиреВрдиреА рд░реВрдк рдФрд░ рдорд╢реАрди рдХреЗ рд░реВрдк рд╣реИрдВ (рдпрд╣ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдиреАрдЪреЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛)ред рдкреЛрд░реНрдЯреЗрдмрд▓ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреА рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде data.table рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рджреМрд░рд╛рди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рджреА рдЬрд╛рдПрдВрдЧреАред
ptn <- "^(.+?) (.+)$"
3. рдкрд╣рд▓реЗ рдкрд░рд┐рдгрд╛рдо
рдЬрд╛рдБрдЪреЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рд╕рдВрдЧрдардирд╛рддреНрдордХ рд░реВрдк рдбреЗрдЯрд╛ рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рд╣реИрдВред
sort( table(dt$OrgType) )
## ## 1 392 649 17118 17680
рдбреЗрдЯрд╛ рдХрд╛рдлреА рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ: рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдореА рдкреНрд░рд╛рдкреНрдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдЯреИрдХреНрд╕ рдореЗрдВ рдХрдореА?) рдореЗрдВ рдЕрдЧреНрд░рдгреА рд╣реЛрддреЗ рд╣реИрдВ, рд╕реАрдорд┐рдд рджреЗрдпрддрд╛ рд╡рд╛рд▓реА рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рд╕рдВрдпреБрдХреНрдд рд╕реНрдЯреЙрдХ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рд╕рд╛рдЭреЗрджрд╛рд░реА рднреАред
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд╛рдиреВрдиреА рд░реВрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХрд┐рддрдиреЗ рд╕реНрд╡рддрдВрддреНрд░
рд▓рд╛рдЗрд╕реЗрдВрд╕рдзрд╛рд░рд┐рдпреЛрдВ (рдФрд░ рдХрд╛рд░реЛрдВ рдХреЛ) рдиреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рдХрд╛рдиреВрдиреА рдЗрдХрд╛рдИ (PSRN) рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред
dt[, list( N = length( unique(OGRN) ) ), by = OrgType][order(N, decreasing = TRUE)]
## OrgType N ## 1: 12352 ## 2: 563 ## 3: 14 ## 4: 6 ## 5: 1
рдбреЗрдЯрд╛ рдХреА рд╕рдлрд╛рдИ
рдорд╛рд╕реНрдХреЛ рдореЗрдВ рдЯреИрдХреНрд╕рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реЛрдВ рдХреЗ рдХрд┐рд╕ рдмреНрд░рд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдбреЗрдЯрд╛ рд╕реЗрдЯ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░ рдмреНрд░рд╛рдВрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: 115, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ? рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо "M" рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЕрдВрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред
sort( unique( dt[grep("^M.*", CarBrand), CarBrand]))
## [1] "M214" "MASERATI" "MAZDA" ## [4] "MAZDA-" "MERCEDES" "MERCEDES-BENZ" ## [7] "MERCEDES-BENZ-" "MERCEDES-BENZ-S500" "MERCEDES-BENZC" ## [10] "MERCEDES-BENZE200K" "MERCEDES-BENZE220CDI" "MERCEDES-BNZ" ## [13] "MERCERDES-BENZ" "MERCRDES" "MERCRDES-BENZ" ## [16] "MERSEDES-" "MERSEDES-BENZ" "METROCAB" ## [19] "MG" "MINI" "MITSUBISHI"
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд╛рд░ рдмреНрд░рд╛рдВрдб рдбреЗрдЯрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рдмреНрд░рд╛рдВрдб - рдорд░реНрд╕рд┐рдбреАрдЬ-рдмреЗрдВрдЬ - рд╡рд┐рднрд┐рдиреНрди рдирд╛рдореЛрдВ рдХреЗ рддрд╣рдд рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдкрд╛рдареНрдп рд╕реВрдЪрдирд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЖрдзрд╛рд░ рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди "рд▓рд╛рдЗрди рд╕реНрдкреЗрд╕рд┐рдВрдЧ" рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдПрдХ рдореАрдЯреНрд░рд┐рдХ рдХреЛ рд╡рд░реНрдгреЛрдВ рдкрд░ рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рдорд╛рди, рдХрдо рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╕рдорд╛рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╢реВрдиреНрдп рдХреА рджреВрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рдмрд╕реЗ рднрд┐рдиреНрди рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдПрдХ рдХреА рджреВрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рд╕реНрдЯреНрд░реИрдВрдбрд┐рд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЬрд╛рд░реЛ-рд╡рд┐рдВрдХрд▓рд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рджреВрд░реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рдорд╛рдирддрд╛, 1-рд╕реНрдЯреНрд░реЗрдВрдерд┐рд╕реНрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред
1 - stringdist( c("MERCEDES","MERSEDES","MAZDA","RENAULT","SAAB"), "MERCEDES", method = "jw", p = 0.1)
## [1] 1.0000 0.9417 0.5950 0.3452 0.0000
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдбреЗрдЯрд╛ рд╕рдлрд╛рдИ рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕рдмрд╕реЗ рд╕рдорд╛рди рдореВрд▓реНрдп рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА (рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ)ред рджреВрд╕рд░реЗ, рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╕рдЯреАрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рднреА рдореИрдиреБрдЕрд▓ рдбреЗрдЯрд╛ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рддреАрди рдмреНрд░рд╛рдВрдб рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЧрд▓рдд рдорд╛рди "BAZ" рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ:
1 - stringdist("BAZ", c("VAZ", "UAZ", "ZAZ"), method = "jw", p = 0.1)
## [1] 0.7778 0.7778 0.7778
рдЕрд░реНрдз-рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реБрдзрд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреАрдЪреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрдзрд╛рд░ рд╡рд┐рдХрд▓реНрдк рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреНрд▓реАрдВрдЬрд┐рдВрдЧ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЗ рдХрд╛рдо рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╛ рддреЛ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛, рдЕрдХреНрд╕рд░ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдорд╛рди рд╕рд╣реА рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╕рд╛рдордирд╛ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рд╡реИрд▓реНрдпреВ рдХреЛ рд╡рдЬрд╝рдирд┐рдВрдЧ рдлреИрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдиреБрдкрд╛рддрд┐рдХ рд░реВрдк рд╕реЗ рдкрдВрдХреНрддрд┐ рдирд┐рдХрдЯрддрд╛ рдореАрдЯреНрд░рд┐рдХ рдореЗрдВ рд╡реГрджреНрдзрд┐ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрдХреНрд╕рд░ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдХрд╛рд░ рдмреНрд░рд╛рдВрдб, рдорд╛рддреНрд░рд╛ рдХреЗ рдХрд╛рд░рдг рдЖрдЧреЗ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ, рд╕рдорд╛рдирддрд╛ рдХреЗ рдмрдЬрд╛рдп, рдереНрд░реЗрд╢реЛрд▓реНрдб рд╡реИрд▓реНрдпреВ
t
рдКрдкрд░ рд╕рдорд╛рдирддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмрд╛рдж рдореЗрдВ
t
рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ)ред рдорд╢реАрди рдХреЗ рдмреНрд░рд╛рдВрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдиреБрд╢рдВрд╕рд┐рдд "рд╕рдВрджрд░реНрдн" рдореВрд▓реНрдп рдЙрд╕реА рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред "рдмреНрд░рд╛рдВрдб - рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдлрд┐рдХреНрд╕" рдЬреЛрдбрд╝реЗ рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рдж, рд╕рд╣реА рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред
рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдлрд┐рдЯ рджреЗрддрд╛ рд╣реИред
bestmatch.gen <- function(wc, t = 0){
t
рдХреА рджрд╣рд▓реАрдЬ рдореВрд▓реНрдп рдЕрдиреБрднрд╡рдЬрдиреНрдп рд░реВрдк
t
рдЪреБрдиреА рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдереНрд░реЗрд╢реЛрд▓реНрдб рдкреИрд░рд╛рдореАрдЯрд░ t = 0.7 рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
bm07 <- bestmatch.gen( table( dt$CarBrand), t = 0.7 ) s <- c("FORD","RENO","MERS","PEGO") sapply(s, bm07)
## FORD RENO MERS PEGO ## "FORD" "RENAULT" "MERCEDES-BENZ" "PEUGEOT"
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдмрд╣реБрдд рдЦреБрд╢реА рдХреА рдмрд╛рдд рд╣реИред рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдХрд╛рд░ рдмреНрд░рд╛рдВрдб рдЬреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд░реНрд╢рд╛рдП рдЧрдП рд╣реИрдВ, рдЕрдиреНрдп рд╕рд╣реА рдирд╛рдореЛрдВ рдХреЛ "рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ"ред
s <- c("HONDA", "CHRYSLER", "VOLVO") sapply(s, bm07)
## HONDA CHRYSLER VOLVO ## "HYUNDAI" "CHEVROLET" "VOLKSWAGEN"
рдЖрдЗрдП рджрд╣рд▓реАрдЬ рдорд╛рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
bm09 <- bestmatch.gen( table( dt$CarBrand), t = 0.9 ) s <- c("HONDA","CHRYSLER","VOLVO") sapply(s, bm09)
## HONDA CHRYSLER VOLVO ## "HONDA" "CHRYSLER" "VOLVO"
рдХреНрдпрд╛ рд╕рдм рдареАрдХ рд╣реИ? рд▓рдЧрднрдЧред рдбрд┐рд╕рд┐рдорд┐рд▓рд░ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдмрд╣реБрдд рдХрдбрд╝реА рдХрддрд░рди рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреБрдЫ рдЧрд▓рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╣реА рдорд╛рдирддрд╛ рд╣реИред рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
s <- c("CEAT", "CVEVROLET") sapply(s, bm09)
## CEAT CVEVROLET ## "CEAT" "CVEVROLET"
рдЕрдм рдорд╢реАрдиреЛрдВ рдХреЗ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рдЪреВрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд╛рде рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореВрд▓ рдореВрд▓реНрдп (рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ) рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдХрд┐рддрдиреА рдмрд╛рд░ рдмреНрд░рд╛рдВрдб рдирд╛рдо рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рд▓реЗрдмрд▓ рдЬреЛ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реЗрдЯ рдХреА рдХреБрдЫ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреБрд░реНрд▓рдн (рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЧрд▓рдд) рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╣реА рдорд╛рдирддрд╛ рд╣реИред
ncb <- table(dt$CarBrand) scb <- names(ncb)
DictName рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдЬрд╛рдБрдЪрдирд╛ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП "cbdict_in.txt" рдирд╛рдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВред
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд╕реЗрдЯ рдореЗрдВ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:
- рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рд░ рдХрд╛ рдмреНрд░рд╛рдВрдб рдирд╣реАрдВ рд╣реИ - рдЦрд╛рд▓реА рдпрд╛ "NO", рдФрд░ рдХреБрдЫ рдореЙрдбрд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ: L1H1, M214; рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ UNKNOWN рдпрд╛ рдПрдХ рд╕рдорд╛рди рдЫрджреНрдо рдореВрд▓реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди;
- рджреЛ рд╡рд░реНрддрдиреА рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВ: рдорд░реНрд╕рд┐рдбреАрдЬ рдФрд░ рдорд░реНрд╕рд┐рдбреАрдЬ-рдмреЗрдВрдЬ, рд╣рдо рдПрдХ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдорд░реНрд╕рд┐рдбреАрдЬ-рдмреЗрдВрдЬ;
- ZAZ рдХреЗ рджреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╕реНрд╡рддрдВрддреНрд░ рд╡рд░реНрддрдиреА рд╣реИрдВ (рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ, рдФрд░ рджреЛрдиреЛрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рд╣реА, рдХреНрд░рд┐рдпрд╛ = KEEP рдХреЗ рд░реВрдк рдореЗрдВ рдмрдЪрдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ); рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдФрд░ UTF-8 рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкрддреНрд░ рдХрд╣реАрдВ;
- рдХреБрдЫ рдорд╢реАрди рдирд╛рдореЛрдВ рдореЗрдВ рдПрдХ рдмреНрд░рд╛рдВрдб рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбрд▓: SAMAND (IRAN KHODRO)
- рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рднреНрд░рдо TAGAZ - VORTEX рдФрд░ JAC; рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ (рдпрджреНрдпрдкрд┐ рдмрд╣реБрдд рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ) рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо TAGAZ рдЙрди рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЛ TAGAZ, A21, SUV, SUVT11, VORTEX, JAC рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реАрдорд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреБрдЫ рдЧрд▓рдд рдирд╛рдореЛрдВ рдХреЛ рд╡реИрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ: рд╕реАрдИрдПрдЯреА, рд╕реАрд╡реАрдИрд╡реАрдУрдПрд▓рдИрдЯреА;
- рджреЛ-рд╢рдмреНрдж рдЯрд┐рдХрдЯ рдПрдХ рдХреЗ рд▓рд┐рдП рдХрдо рд╣реЛ рдЧрдП рд╣реИрдВ: ALFA (ALFA ROMEO), GREAT (GREAT WALL), IRAN (IRAN KHODRO), LAND (LAND ROVER)ред
рд╣рдо
cbdict_in.txt рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред
if ( file.exists("cbdict_in.txt")) url <- "cbdict_in.txt" else url <- "cbdict_out.txt" cbdict_in <- read.table( url, header = TRUE, sep = ";", colClasses = c( rep("character",4), "numeric", "numeric", "character"), encoding = "UTF-8") cbdict <- cbdict_in$DictName names(cbdict) <- cbdict_in$SourceName
рдФрд░ рд╣рдо рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрд╛рд░реЛрдВ рдХреЗ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░рддреЗ рд╣реИрдВред
dt[, CarBrand := cbdict[CarBrand]] dt[is.na(CarBrand), CarBrand := "UNKNOWN"]
рдХрд╛рд░реЛрдВ рдХреЗ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЗ рдЕрджреНрд╡рд┐рддреАрдп рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд▓рдЧрднрдЧ рдЖрдзрд╛ рд╣реЛ рдЧрдпрд╛
length( unique(dt$CarBrand) )
## [1] 72
рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм
1. рд╢реАрд░реНрд╖ 10 рд╕рдВрдЧрдарди
10 рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЯреИрдХреНрд╕реА рдкрд╛рд░реНрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЖрдпрд╛рдо - рдкреАрдПрд╕рдЖрд░рдПрди рдХреЗ рд▓рд┐рдП рд░реЗрдЯрд┐рдВрдЧ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
st <- dt[, list( NumCars = length(RegPlate)), by = list(OGRN, LegalName) ] head( st[order( NumCars, decreasing = TRUE)], 10)
## OGRN LegalName NumCars ## 1: 1137746197104 ┬л┬╗ 866 ## 2: 1037727000893 ┬л-┬╗ 751 ## 3: 1067746273198 ┬л ┬╗ 547 ## 4: 1037789018849 ┬л┬╗ 541 ## 5: 1127746010700 ┬л-24 ┬╗ 406 ## 6: 1057748223653 ┬л┬╗ 349 ## 7: 5067746596297 ┬л┬╗ 288 ## 8: 1027739272175 ┬л14 ┬╗ 267 ## 9: 1137746133250 ┬л ┬╗ 255 ## 10: 5077746757688 ┬л┬╗ 238
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ, рдХреЗрд╡рд▓ рд▓рд╛рдЗрд╕реЗрдВрд╕рдзрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рдиреВрдиреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЯреНрд░реЗрдбрдорд╛рд░реНрдХ рдирд╣реАрдВред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рдВрдЧрдарди рдФрд░ OGRN рдХреЗ рдирд╛рдо рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЯреИрдХреНрд╕реА рдмреЗрдбрд╝реЗ рдХрд┐рд╕ рдмреНрд░рд╛рдВрдб рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╣реИред рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЯреИрдХреНрд╕реА
рдмреЗрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо "
top10orgs.csv " рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
top10orgs <- data.table( read.table( "top10orgs.csv", header = TRUE, sep = ";", colClasses = "character", encoding = "UTF-8"))
рд╣рдо рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЬреЙрдЗрди рдСрдкрд░реЗрд╢рди рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП data.table рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
setkey(top10orgs,OGRN) setkey(st,OGRN) st[top10orgs][order(NumCars, decreasing = TRUE), list(OrgBrand, EasyPhone, NumCars)]
## OrgBrand EasyPhone NumCars ## 1: 781 81 82 866 ## 2: 956 956 8 956 751 ## 3: - 641 11 11 547 ## 4: 500 0 500 541 ## 5: 24 777 66 24 406 ## 6: 777 5 777 349 ## 7: 940 88 88 288 ## 8: 14 707 2 707 267 ## 9: Cabby 21 21 989 255 ## 10: 927 11 11 238
2. рдХрд╛рдиреВрдиреА рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреАрди рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░ рдмреНрд░рд╛рдВрдб
рд▓рд╛рдЗрд╕реЗрдВрд╕реА рдХреЗ рдХрд╛рдиреВрдиреА рд░реВрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реЛрдВ рдХреЗ рдХреМрди рд╕реЗ рдмреНрд░рд╛рдВрдб рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВ? рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдХреЛ рджреЛ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рдорд╢реАрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рдВрдЧрдардирд╛рддреНрдордХ рд░реВрдкред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИ:
- рдХреБрд▓ рд╕рдВрдХреЗрддрдХ рдХреА рдЧрдгрдирд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, PSRN рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛)ред
- рд░реИрдВрдХ рдЧрдгрдирд╛ред
- рд░реИрдВрдХ рдкреНрд░рддрд┐рдмрдВрдз (рд╢реАрд░реНрд╖ 3), рдЫрдБрдЯрд╛рдИ, рд╕реНрддрдВрдн рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯред
st <- dt[, list(AGGR = length(RegPlate)), by = list(OrgType, CarBrand) ] st.r <- st[, list(CarBrand, AGGR, r = ( 1 + length(AGGR) - rank(AGGR, ties.method="first"))), by = list(OrgType)]
## ## 1 FORD (212) CHEVROLET (2465) VOLVO (1) KIA (192) FORD (3297) ## 2 RENAULT (175) FORD (2238) <NA> CHEVROLET (115) RENAULT (2922) ## 3 HYUNDAI (122) RENAULT (1996) <NA> FORD (53) HYUNDAI (2812)
рджреГрд╢реНрдп
1. рдкрд╛рдИ рдЪрд╛рд░реНрдЯ рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗ
рдкрд╛рдИ рдЪрд╛рд░реНрдЯ, рдкрд╛рдИ рдЪрд╛рд░реНрдЯ, рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреЗрд╢реЗрд╡рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдлрд┐рд░ рднреА, рдпрд╣ "рдкрдХрд╛рдирд╛" рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЯреИрдХреНрд╕реА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рддрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрд░реЗрдЦ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдо рд╕реЗ рдХрдо 1000 рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдВрдб рджрд┐рдЦрд╛рдПрдВрдЧреЗред
st <- dt[, list(N = length(RegPlate)), by = CarBrand ]
## CarBrand N ## 1: FORD 5800 ## 2: RENAULT 5093 ## 3: HYUNDAI 4727 ## 4: CHEVROLET 4660 ## 5: KIA 2220 ## 6: SKODA 2073 ## 7: NISSAN 1321 ## 8: VOLKSWAGEN 1298 ## 9: TOYOTA 1075 ## 10: MERCEDES-BENZ 1039 ## 11: 6534
рд╢реЗрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЯрд┐рдХрдЯреЛрдВ рдХреЗ рдРрд╕реЗ рдХреНрд░рдо рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЫрдВрдЯрд╛рдИ рдЕрдВрддрд┐рдо рд╕реНрдерд╛рди рд╕реЗ "рдЕрдиреНрдп рдмреНрд░рд╛рдВрдбреЛрдВ" рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд▓рд╛рдПрдЧреАред
piedata <- piedata[, CarBrand := factor(CarBrand, levels = CarBrand, ordered = TRUE)]
рдЪрд╛рд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, ggplot2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
pie <- ggplot(piedata, aes( x = "", y = N, fill = CarBrand)) + geom_bar(stat = "identity") + coord_polar(theta = "y") pie

рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдХрдИ рджреГрд╢реНрдп рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
- рдЧреНрд░реЗ рдкреГрд╖реНрдарднреВрдорд┐, рд╕реАрдорд╛рдУрдВ, рд░реЛрдЯрд░реА рдЕрдХреНрд╖, рд▓реЗрдмрд▓ рдФрд░ рдирд┐рд╢рд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ;
- рдПрдХ рдЕрд▓рдЧ рд░рдВрдЧ рдХрд╛ рдкреИрдорд╛рдирд╛ рдЪреБрдиреЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ "рдХреЗрдХ рдХрд╛ рдЯреБрдХрдбрд╝рд╛" рдХреЛ рд╕рд░реНрдХрд▓ рдХрд░реЗрдВ;
- рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдмреНрд░рд╛рдВрдб рдХреЗ рдЕрдиреБрд░реВрдк рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЪрд┐рдкрдХрд╛рдПрдВ;
- рдХрдерд╛ рдХреЛ рдкрд╛рда рдирд╛рдо рджреЗрдВред
рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЖрдкрдХреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд▓реЗрдмрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕реЗрдХреНрдЯрд░ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдмрд┐рдВрджреБ рдХреА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд╖реЗрддреНрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (
рдЖрд░реНрдЯреЗрд▓рд╕реНрдЯреИрдЯрд┐рд╕реНрдЯрд┐рдХреЛрд╡реЛрд╡ рдкрд░ рдЬрд╛рд╕реВрд╕реА)ред
piedata <- piedata[, pos := cumsum(N) - 0.5*N ] pie <- ggplot(piedata, aes( x = "", y = N, fill = CarBrand)) + geom_bar( color = "black", stat = "identity", width = 0.5) + geom_text( aes(label = N, y = pos), x = 1.4, color = "black", size = 5) + scale_fill_brewer(palette = "Paired", name = " ") + coord_polar(theta = "y") + theme_bw() + theme ( panel.border = element_blank() , panel.grid.major = element_blank() , axis.ticks = element_blank() , axis.title.x = element_blank() , axis.title.y = element_blank() , axis.text.x = element_blank() , legend.title = element_text(face="plain", size=16) ) pie

2. рдмрд╛рд░ рдЪрд╛рд░реНрдЯ
рд╕рд░реНрдХрд▓ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╡рд┐рдХрд▓реНрдк рдПрдХ рдмрд╛рд░ рдЪрд╛рд░реНрдЯ, рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдХреЙрд▓рдо рдХреА рд▓рдВрдмрд╛рдИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд░реНрдХреНрд╕ рдХреА рд▓рдВрдмрд╛рдИ рдпрд╛ рд╕рд░реНрдХрд▓ рд╕реЗрдХреНрдЯрд░реЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧрдардирд╛рддреНрдордХ рд░реВрдкреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рддрд░рдгред
st <- dt[, list(N = length(RegPlate)), by = list(OrgType, CarBrand) ]

3. рд╣реАрдЯ рдореИрдк рдЖрд░реЗрдЦ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: "рдХрд┐рд╕ рдХрд╛рд░ рдмреНрд░рд╛рдВрдб рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ (рдЯреИрдХреНрд╕реА рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪ) рдХреЛ" рд╕реБрдВрджрд░ "рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЦрддрд░рд╛ рд╣реИ?" рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рддреНрд░рд┐рднреБрдЬ рдореЗрдВ рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реБрдВрджрд░ рд╕рдВрдЦреНрдпрд╛ рдорд╛рдирддреЗ рд╣реИрдВ: 111, 222, рдЖрджрд┐ред
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рджреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХрд╛рд░ рдХрд╛ рдмреНрд░рд╛рдВрдб рдФрд░ рддреАрдиред рд╕рдВрдХреЗрддрдХ - рдмреНрд░рд╛рдВрдб рдФрд░ рдЯреНрд░рд┐рдкрд▓ рдХреЗ рджрд┐рдП рдЧрдП рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдХрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреЗрдмрд▓ рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдПрдирд╛рд▓реЙрдЧ, рд╣реАрдЯ рдореИрдк рдЖрд░реЗрдЦ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИред рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЯреНрд░рд┐рдкрд▓, рдЕрдзрд┐рдХ рдЧрд╣рди рд░рдВрдЧ рд╕реЗрд▓ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рддрд╛ рд╣реИред
ln <- dt[grep( "^[^0-9]([0-9])\\1{2}.+$" , RegPlate), list(CarBrand, LuckyNum = gsub("^[^0-9]([0-9]{3}).+$","\\1", RegPlate))] ln <- ln[, list( N = .N), by = list(CarBrand, LuckyNum) ] ln <- ln[, Luck := sum(N), by = list(CarBrand) ]

рд╕рднреА рдЪрд┐рддреНрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдЖрдзрд╛рд░рд┐рдд рд░рдВрдЧ рдкрдЯреНрдЯрд┐рдХрд╛
2.0 рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд░рдВрдЧ рдкрдЯреНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред