如何找到 data.table 对象的分组公共值?
要找到data.table对象的分组公共值,我们可以使用 Reduce 函数和 intersect 函数。
例如,如果我们有一个data.table名为 DT的对象,其中包含一个数字列 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 Rate1: 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 Rank1: 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 Score1: 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
以上是 如何找到 data.table 对象的分组公共值? 的全部内容, 来源链接: utcz.com/z/354377.html