如何在 R 数据框架中提取行的唯一组合?


要提取行的唯一组合,我们可以用单方括号对数据框架进行子集化,并在对数据框架中的行排序后使用 duplicated 函数的否定。可以使用 apply 函数对数据框架进行排序,并且我们必须转置排序,如以下示例所示。要了解其工作原理,请分步操作。

示例 1

考虑以下数据框架 -

现场演示

> x1<-rpois(20,1)
> x2<-rpois(20,1)
> df1<-data.frame(x1,x2)
> df1

输出

   x1 x2
1   3  1
2   1  0
3   1  0
4   1  3
5   2  2
6   3  0
7   4  2
8   3  3
9   0  1
10  0  3
11  0  0
12  0  2
13  1  1
14  4  3
15  2  0
16  0  2
17  1  0
18  0  1
19  3  1
20  0  1

提取 df1 中行的唯一组合 -

> df1[!duplicated(t(apply(df1,1,sort))),]

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输出

   x1 x2
1   3  1
2   1  0
5   2  2
6   3  0
7   4  2
8   3  3
11  0  0
12  0  2
13  1  1
14  4  3

示例 2

现场演示

> y1<-sample(LETTERS[1:3],20,replace=TRUE)
> y2<-sample(LETTERS[1:3],20,replace=TRUE)
> df2<-data.frame(y1,y2)
> df2

输出

   y1 y2
1   B  B
2   C  C
3   C  B
4   A  B
5   A  C
6   C  B
7   C  B
8   B  C
9   C  B
10  A  A
11  A  A
12  A  B
13  B  B
14  B  C
15  B  C
16  B  C
17  C  A
18  C  B
19  B  C
20  C  B

提取 df2 中行的唯一组合 -

> df2[!duplicated(t(apply(df2,1,sort))),]

输出

   y1 y2
1   B  B
2   C  C
3   C  B
4   A  B
5   A  C
10  A  A

更新日期:2021-03-05

707 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告