我有一個非常龐大而複雜的數據集,有很多公司的觀察。這些公司的一些觀察結果是多餘的,我需要制定一個關鍵將冗餘觀測映射到單一觀測。然而,唯一能說出他們是否代表同一家公司的唯一方法是通過各種變量的相似性。我認爲適當的方法是基於各種條件或甚至某種傾向分數匹配的一種聚類。也許我只需要靈活的工具來製作複雜的相似矩陣。R中的許多維度上的聚類/匹配
不幸的是,我不太清楚在R中如何去解決這個問題。對於聚類和分類,我所見過的大多數工具似乎都是用數字距離或分類數據來實現的,但似乎並不允許多個條件或用戶指定的條件。
下面我試圖創建一個更小的公開示例,我正在使用的數據以及我試圖產生的結果。有一些條件必須適用,例如,位置必須相同。有一些功能可以相互關聯,例如var1和var2。然後有一些功能可能會相互關聯,但它們不能相互衝突,如var3。
一個額外的複雜層面是,我試圖用來映射冗餘觀察的關聯類型各不相同。例如,id1和id2是兩次冗餘地輸入到數據中的同一公司。在一個地方它的名字是「蘋果」,另一個是「紅蘋果」。他們共享相同的位置,var1值和var3(調整格式後)。同樣,ID3,5和6也只是一家公司,儘管每個公司的許多輸入是不同的。一些集羣將識別多個觀測值,其他集羣只有一個觀測值。理想情況下,我希望找到一種方法來根據多個條件對觀察結果進行分類或關聯,例如: 1.測試位置是否相同 2.測試var3是否不同 3.測試名稱是否爲子字符串別人的 4.測試名稱的編輯距離 5.測試觀察
不管怎麼說,希望有更好的之間VAR1和VAR2的相似性,對於更靈活的工具比我發現或有人有這方面的經驗類型的數據工作R.任何和所有的建議和意見非常感謝!
數據
id name location var1 var2 var3
1 apples US 1 abc 12345
2 red apples US 1 NA 12-345
3 green apples Mexico 2 def 235-92
4 bananas Brazil 2 abc NA
5 oranges Mexico 2 NA 23592
6 green apple Mexico NA def NA
7 tangerines Honduras NA abc 3498
8 mango Honduras 1 NA NA
9 strawberries Honduras NA abcd 3498
10 strawberry Honduras NA abc 3498
11 blueberry Brazil 1 abcd 2348
12 blueberry Brazil 3 abc NA
13 blueberry Mexico NA def 1859
14 bananas Brazil 1 def 2348
15 blackberries Honduras NA abc NA
16 grapes Mexico 6 qrs NA
17 grapefruits Brazil 1 NA 1379
18 grapefruit Brazil 2 bcd 1379
19 mango Brazil 3 efaq NA
20 fuji apples US 4 NA 189-35
結果
id name location var1 var2 var3 Result
1 apples US 1 abc 12345 1
2 red apples US 1 NA 12-345 1
3 green apples Mexico 2 def 235-92 3
4 bananas Brazil 2 abc NA 4
5 oranges Mexico 2 NA 23592 3
6 green apple Mexico NA def NA 3
7 tangerines Honduras NA abc 3498 7
8 mango Honduras 1 NA NA 8
9 strawberries Honduras NA abcd 3498 7
10 strawberry Honduras NA abc 3498 7
11 blueberry Brazil 1 abcd 2348 11
12 blueberry Brazil 3 abc NA 11
13 blueberry Mexico NA def 1859 13
14 bananas Brazil 1 def 2348 11
15 blackberries Honduras NA abc NA 15
16 grapes Mexico 6 qrs NA 16
17 grapefruits Brazil 1 NA 1379 17
18 grapefruit Brazil 2 bcd 1379 17
19 mango Brazil 3 efaq NA 19
20 fuji apples US 4 NA 189-35 20
預先感謝您的時間和幫助!
你在這裏有什麼是我們所說的「硬」問題。我認爲在每個變量中創建一個數字距離的方法是使用http://en.wikipedia.org/wiki/Levenshtein_distance。然後,您可以爲匹配的總距離定義一些公差。編輯:我會盡量嘲弄一些。 – stanekam 2014-10-09 22:01:27
還有一些軟件包可以幫助您檢查與角色的相似性。它可以讓你斷定'蘋果'和'紅蘋果'在同一個簇中。 – 2014-10-09 22:10:25
@Adii_將不會有任何包裝將匹配''蘋果''到''紅蘋果'',而不是其中的任何其他蘋果。 – stanekam 2014-10-09 22:17:01