删除R中的重复行,即使顺序不同
这感觉应该是显而易见的,但我真的没有看到 下面是我正在处理的数据类型的一个小示例:删除R中的重复行,即使顺序不同,r,R,这感觉应该是显而易见的,但我真的没有看到 下面是我正在处理的数据类型的一个小示例: x1 <- as.character(c("Apple", "Banana", "Cat", "Dog", "Orange")) x2 <- as.character(c("Banana", "Orange", "Dog", "Cat", "Apple")) x3 <- as.character(c("Orange", "Apple", NA, NA, "Banana")) g
x1 <- as.character(c("Apple", "Banana", "Cat", "Dog", "Orange"))
x2 <- as.character(c("Banana", "Orange", "Dog", "Cat", "Apple"))
x3 <- as.character(c("Orange", "Apple", NA, NA, "Banana"))
groups <- data_frame(x1, x2, x3)
x1我不知道您的示例数据是否为我们提供了您需要帮助的示例,但这里有一个技巧。正如注释中提到的其他工具一样,大多数工具都会跨行查找唯一的对。如果配对不重要,您可以执行以下操作:
library(dplyr)
x1 <- as.character(c("Apple", "Banana", "Cat", "Dog", "Orange"))
x2 <- as.character(c("Banana", "Orange", "Dog", "Cat", "Apple"))
x3 <- as.character(c("Orange", "Apple", NA, NA, "Banana"))
groups <- data_frame(x1, x2, x3)
groups %>%
mutate_all(sort, na.last = TRUE) %>%
unique()
库(dplyr)
x1在以合理的方式重新排列数据后,您可以使用复制的
。一种明智的方法是为每种水果和动物设置TRUE/FALSE
值:与其设置x1
值“dog”
,不如设置dog
值TRUE
。例如,可以这样做:
g <- na.omit(unique(unlist(groups)))
df <- t(apply(as.matrix(groups), 1, function(x) g %in% x))
# if needed, you could make the `df` human-readable:
df <- setNames(as.data.frame(df), g)
duplicated(df)
g您可能需要某种键/值匹配对您的数据没有重复项,假设(因为这是一个data.frame
)列不同。如果这些列没有任何意义(因此Dog,Cat
与Cat,Dog
相同),那么您可能应该看到Yes,这些列基本上没有意义。看起来链接上的答案对最初的提问者不起作用,但我会探究。要给人留下这样的印象,我必须找到一条迂回的道路。
x1 <- as.character(c("Apple", "Banana", "Cat", "Dog", "Orange"))
x2 <- as.character(c("Banana", "Orange", "Dog", "Cat", "Apple"))
x3 <- as.character(c("Orange", "Apple", NA, NA, "Banana"))
groups <- data.frame(x1, x2, x3, stringsAsFactors=FALSE)