R的duplicated
返回一个向量,该向量显示向量或数据帧的每个元素是否与具有较小下标的元素重复。因此如果5行数据帧的行3、4和5相同,duplicated
会给我一个向量
FALSE, FALSE, FALSE, TRUE, TRUE
但在这种情况下,我实际上想要
FALSE, FALSE, TRUE, TRUE, TRUE
也就是说,我想知道一行是否也被具有较大下标的行复制。
发布于 2011-10-22 03:56:43
duplicated
有一个fromLast
论点。的“示例”部分?duplicated
演示如何使用它。只要打电话就行了duplicated
两次,一次使用fromLast=FALSE
一次使用fromLast=TRUE
取这两行中的任何一行TRUE
..。
一些后期编辑:您没有提供可重现的示例,所以这里有一个由@jbaum好心提供的插图
vec <- c("a", "b", "c","c","c")
vec[duplicated(vec) | duplicated(vec, fromLast=TRUE)]
## [1] "c" "c" "c"
Edit:以数据框为例:
df <- data.frame(rbind(c("a","a"),c("b","b"),c("c","c"),c("c","c")))
df[duplicated(df) | duplicated(df, fromLast=TRUE), ]
## X1 X2
## 3 c c
## 4 c c
发布于 2011-10-22 03:49:00
您需要组装一组duplicated
值,应用unique
,然后使用%in%
..。像往常一样,一个样本问题将使这个过程变得活跃起来。
> vec <- c("a", "b", "c","c","c")
> vec[ duplicated(vec)]
[1] "c" "c"
> unique(vec[ duplicated(vec)])
[1] "c"
> vec %in% unique(vec[ duplicated(vec)])
[1] FALSE FALSE TRUE TRUE TRUE
发布于 2019-06-17 21:47:57
可以使用以下命令获取数据帧中的重复行dplyr
通过做
library(tidyverse)
df = bind_rows(iris, head(iris, 20)) # build some test data
df %>% group_by_all() %>% filter(n()>1) %>% ungroup()
要排除某些列,请执行以下操作group_by_at(vars(-var1, -var2))
可以用来对数据进行分组。
如果实际需要行索引,而不仅仅是数据,您可以先添加它们,如下所示:
df %>% add_rownames %>% group_by_at(vars(-rowname)) %>% filter(n()>1) %>% pull(rowname)
https://stackoverflow.com/questions/7854433
复制相似问题