兩個字段 使用R語言比較兩個字段不同的字元數

2021-10-14 16:58:34 字數 4360 閱讀 1370

一、需求背景

有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...