一、需求背景
有5000個車牌號,需要找出那些前兩位相同,後五位相差乙個字元的車牌。
源資料如下:
按需求找出來的資料如下:
二、問題分析
5000個車牌號在excel中數量很少。但是處理這個問題需要對所有前兩位相同的車牌兩兩比對。那樣資料量是1973780條。
暫不知怎麼用excel處理。
所以這裡使用的工具是r語言,主要使用的函式是sqldf包。
三、處理過程
1) r語言匯入excel資料
library(readxl)
data1
2) 將車牌表根據前兩位相同的要求兩兩關聯,得到關聯表,共1973780條資料。
關鍵**:
**反饋a
3)分別截取出兩列車牌號的後5位
關鍵**:
**反饋b
4)將每一行,platenumber_a 和platenumber_b對應的列進行判斷,如果對應的列相同則為0,不同則為1。
關鍵**:
**反饋c
5)選出tt.platenumber_3+ttt.platenumber_4+ttt.platenumber_5+ttt.platenumber_6+ttt.platenumber_7=1的行,即為platenumber_a和platenumber_b後五位只相差乙個字元的車牌組合。
**反饋d
四、資料處理整體**如下
library(sqldf)
platenumber
"select
ttt.platenumber_a,
ttt.platenumber_b,
ttt.platenumber_3+ttt.platenumber_4+ttt.platenumber_5+ttt.platenumber_6+ttt.platenumber_7 as platenumber_34567
from
(select
tt.platenumber_a,
tt.platenumber_b,
(case when platenumber_a_3<>platenumber_b_3 then 1 else 0 end) as platenumber_3,
(case when platenumber_a_4<>platenumber_b_4 then 1 else 0 end) as platenumber_4,
(case when platenumber_a_5<>platenumber_b_5 then 1 else 0 end) as platenumber_5,
(case when platenumber_a_6<>platenumber_b_6 then 1 else 0 end) as platenumber_6,
(case when platenumber_a_7<>platenumber_b_7 then 1 else 0 end) as platenumber_7
from
(select
platenumber_a,
substr(platenumber_a,3,1) as platenumber_a_3,
substr(platenumber_a,4,1) as platenumber_a_4,
substr(platenumber_a,5,1) as platenumber_a_5,
substr(platenumber_a,6,1) as platenumber_a_6,
substr(platenumber_a,7,1) as platenumber_a_7,
platenumber_b,
substr(platenumber_b,3,1) as platenumber_b_3,
substr(platenumber_b,4,1) as platenumber_b_4,
substr(platenumber_b,5,1) as platenumber_b_5,
substr(platenumber_b,6,1) as platenumber_b_6,
substr(platenumber_b,7,1) as platenumber_b_7
from
(select a.platenumber as platenumber_a,b.platenumber as platenumber_b
from data1 a
left join data1 b on substr(a.platenumber,1,2)=substr(b.platenumber,1,2)
) t) as tt
) as ttt
where ttt.platenumber_3+ttt.platenumber_4+ttt.platenumber_5+ttt.platenumber_6+ttt.platenumber_7=1
")
五、匯出資料
write.table(platenumber,"platenumber.csv", sep=",", row.names=true)
GROUP BY 兩個字段
create table test a varchar 10 b varchar 10 c int insert into test values a 甲 1 insert into test values a 甲 1 insert into test values a 甲 1 insert int...
mysql 兩個字段拼接 mysql 多個字段拼接
mysql的查詢結果行欄位拼接,能夠用以下兩個函式實現 1.concat函式 mysql select concat 1 2 3 from test concat 1 2 3 123 假設連線串中存在null,則返回結果為null mysql select concat 1 2 null,3 fro...
java list 根據兩個字段排序
首先建立乙個定義排序規則的類,實現comparator介面 用來定義比較規則的介面 實現compare方法,來定義規則 class sort implements comparator else if t1.sort t2.sort else if t1.pubuli ime t2.pubuli i...