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