如何在 data.table 物件中查詢分組後的公共值?
要查詢 data.table 物件的分組後的公共值,我們可以使用 Reduce 函式與 intersect 函式結合。
例如,如果我們有一個名為 DT 的 data.table 物件,其中包含一個數值列 Num 和一個分類列 C,其中 C 位於第一位,則可以透過使用以下命令找到分組後的公共值:
Reduce(intersect,DT[,.(list(unique(Num))),C]$V1)
示例
考慮以下 data.table 物件:
Group<-sample(LETTERS[1:4],20,replace=TRUE) Rate<-rpois(20,1) library(data.table) DT1<-data.table(Group,Rate) DT1
輸出
建立了以下資料框:
Group Rate 1: A 4 2: C 0 3: D 0 4: C 0 5: A 3 6: A 1 7: D 1 8: B 0 9: A 1 10: A 0 11: C 3 12: B 2 13: B 1 14: C 2 15: D 3 16: B 1 17: A 0 18: C 1 19: A 1 20: C 1
為了查詢 Group 列中所有組的 Rate 的分組後的公共值,請將以下程式碼新增到上述程式碼段中:
示例
Reduce(intersect,DT1[,.(list(unique(Rate))),Group]$V1)
輸出
如果您將以上所有程式碼段作為一個程式執行,它將生成以下輸出:
[1] 1 0
示例
考慮以下 data.table 物件:
Category<-sample(c("I","II","III"),20,replace=TRUE)
Rank<-sample(1:3,20,replace=TRUE)
DT2<-data.table(Category,Rank)
DT2輸出
建立了以下資料框:
Category Rank 1: I 1 2: III 2 3: III 3 4: I 2 5: I 3 6: III 3 7: III 2 8: III 2 9: III 2 10: II 3 11: III 2 12: II 1 13: III 1 14: II 3 15: I 1 16: III 2 17: III 1 18: II 1 19: I 1 20: III 3
要查詢 Category 列中所有組的 Rank 的分組後的公共值,請將以下程式碼新增到上述程式碼段中:
示例
Reduce(intersect,DT2[,.(list(unique(Rank))),Category]$V1)
輸出
如果您將以上所有程式碼段作為一個程式執行,它將生成以下輸出:
[1] 1 3
示例
考慮以下 data.table 物件:
Class<-sample(c("First","Second","Third"),20,replace=TRUE)
Score<-sample(0:2,20,replace=TRUE)
DT3<-data.table(Class,Score)
DT3輸出
建立了以下資料框:
Class Score 1: First 2 2: Second 0 3: First 1 4: Third 2 5: Second 1 6: Third 1 7: Third 0 8: Third 1 9: Third 2 10: Third 1 11: Second 0 12: Third 0 13: First 2 14: First 1 15: First 1 16: First 0 17: Second 2 18: Second 2 19: First 0 20: Second 1
要查詢 Class 列中所有組的 Score 的分組後的公共值,請將以下程式碼新增到上述程式碼段中:
示例
Reduce(intersect,DT3[,.(list(unique(Score))),Class]$V1)
輸出
如果您將以上所有程式碼段作為一個程式執行,它將生成以下輸出:
[1] 2 1 0
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP