2017-06-06 71 views
0

對於這個表:比較各列的內容與其他所有列的內容和比賽的現矩陣計算

enter image description here

我想獲得該表:

enter image description here

... 類似於類似地圖冊中的里程錶。

我試圖創建一個交叉表比較每列中的單詞,對所有其他列的單詞,以顯示它們之間有多少匹配。

例如,比較列1與列2可能會產生4個匹配。黃色,粗體輪廓的單元格是匹配的。

enter image description here

這裏就是我如何指望他們:

enter image description here

我想有可能是一個「容易」的方式來完成這個使用Power查詢。在那兒?

(哦...順便說一下...我尋找的解決方案不應該期望輸入列的靜態數量:即它應該適應更多的列或更少的列在輸入中使用比較集。)

謝謝。

回答

3

不,沒有簡單的方法,但它可以做到。 但是,我得到了不同的結果。我對您邏輯的解釋是:對於每個列組合,1列中每個常見單詞的出現次數必須乘以另一列出現次數。 這是我的結果:

enter image description here

這是我的查詢代碼:

let 
    Source = Table1, 
    ColumnNames = Table.ColumnNames(Source), 
    Tabled = Table.FromColumns({ColumnNames}, type table[Columns = text]), 
    AddedColumns2 = Table.AddColumn(Tabled, "Columns2", each ColumnNames, type {text}), 
    ExpandedColumns2 = Table.ExpandListColumn(AddedColumns2, "Columns2"), 
    CommonWords = 
     Table.AddColumn(ExpandedColumns2, 
         "DistinctIntersect", 
         each if [Columns] = [Columns2] 
          then {} 
          else List.Distinct(List.Intersect({Table.Column(Source,[Columns]), 
                   Table.Column(Source,[Columns2])}))), 
    AddedCount = 
     Table.AddColumn(CommonWords, 
         "Count", 
         (This) => List.Sum({0}&List.Transform(This[DistinctIntersect], 
                each List.Count(List.PositionOf(Table.Column(Source,This[Columns]),_,2)) * 
                 List.Count(List.PositionOf(Table.Column(Source,This[Columns2]),_,2)))), 
         Int64.Type), 
    RemovedColumns = Table.RemoveColumns(AddedCount,{"DistinctIntersect"}), 
    PivotedColumn = Table.Pivot(RemovedColumns, List.Distinct(RemovedColumns[Columns2]), "Columns2", "Count") 
in 
    PivotedColumn 
+0

謝謝@MarcelBeug。你的結果是正確的。我錯了......我錯了。我現在糾正了我的問題中的示例期望輸出表,只是因爲。你給我的東西可能不是很容易,但肯定比我想要的要好。 –