r - R 中的唯一行,考虑两列,无顺序

标签 r unique plyr dplyr

与我发现的问题不同,我想获得没有顺序的两列的唯一性。

我有一个 df:

df<-cbind(c("a","b","c","b"),c("b","d","e","a"))
> df
     [,1] [,2]
 [1,] "a"  "b" 
 [2,] "b"  "d" 
 [3,] "c"  "e" 
 [4,] "b"  "a" 

在本例中,第 1 行和第 4 行是“重复项”,因为 b-a 与 b-a 相同。

我知道如何找到第 1 列和第 2 列的唯一值,但在这种方法下我会发现每一行都是唯一的。

最佳答案

如果只有两列,您还可以使用 pminpmax,如下所示:

library(data.table)
unique(as.data.table(df)[, c("V1", "V2") := list(pmin(V1, V2),
                         pmax(V1, V2))], by = c("V1", "V2"))
#    V1 V2
# 1:  a  b
# 2:  b  d
# 3:  c  e

使用“dplyr”的类似方法可能是:

library(dplyr)
data.frame(df, stringsAsFactors = FALSE) %>% 
  mutate(key = paste0(pmin(X1, X2), pmax(X1, X2), sep = "")) %>% 
  distinct(key)
#   X1 X2 key
# 1  a  b  ab
# 2  b  d  bd
# 3  c  e  ce

关于r - R 中的唯一行,考虑两列,无顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28574006/

相关文章:

r - 如何在R中进行组匹配?

r - 查找源自唯一列的数据框中每一行的最小值

r - 无法使用 plyr 包和使用列表

r - 如何在ggplot2图例中使用下标[R]

r - 如何以百分比格式显示数字?

MongoDB 多个字段上的唯一索引

r - Shiny - 使用 ggplot2(boxplot) 和 'reactive' 子集函数的有效方法

r - 错误 : only defined on a data frame with all numeric variables with ddply on large dataset

r - 在针织机中,没有用于平移for循环的输出

R:在向量列表中查找唯一向量