如何在 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))),]

輸出

   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 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告