如何在 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
廣告