R 查找重复的值并具有引用

R 查找重复的值并具有引用,r,duplicates,R,Duplicates,我的数据=data.lab data.lab <- data.frame(Name=c("A","e","b","c","d"), bp =c( 12,12,11,12,11), sugar = c(19,21,23,19,23)) data.lab使用dplyr,您可以执行以下操作: data.lab %>% group_by(bp, sugar) %>% filter(n() == 2) %>% muta

我的数据=data.lab

data.lab <- data.frame(Name=c("A","e","b","c","d"),
                 bp =c( 12,12,11,12,11),
           sugar = c(19,21,23,19,23))

data.lab使用
dplyr
,您可以执行以下操作:

data.lab %>%
 group_by(bp, sugar) %>%
 filter(n() == 2) %>%
 mutate(pair = seq_along(Name))

  Name     bp sugar  pair
  <fct> <dbl> <dbl> <int>
1 A        12    19     1
2 b        11    23     1
3 c        12    19     2
4 d        11    23     2
或者,如果可能有两对以上的副本:

data.lab %>%
 group_by(bp, sugar) %>%
 filter(n() > 1) %>%
 mutate(pair = seq_along(Name))
或:

或按除“名称”以外的所有变量分组:

或:


继续您的方法,我们可以在base R中使用
ave

dat1 <- data.lab[duplicated(data.lab[c("bp", "sugar")]) | 
                 duplicated(data.lab[c("bp", "sugar")], fromLast = TRUE) , ]

dat1$pair <- with(dat1, ave(Name, bp, sugar, FUN = seq_along))
dat1

#  Name bp sugar pair
#1    A 12    19    1
#2    b 11    23    1
#3    c 12    19    2
#4    d 11    23    2

dat1您能否以可复制的方式提供您的示例?如果您需要有关如何操作的建议,请参阅。另外,您可能正在查找
哪个
。我已将问题更正为suggested@Ronak我通常认为配对正好有两种情况,但是,是的,你是对的,OP可能还需要两对以上的复制品。更新了帖子,谢谢:)有没有办法我可以提供所有的列名,而不是提到bp,sugar?是的,有一种方法可以根据除“Name”之外的所有变量进行分组。将其添加到帖子中。它在
$@AllabuxJaffer中给出了以下错误,这是因为您将
Name
列作为因素。您可以通过执行
data.lab$Name将其更改为character。现在只有此错误出现。..error in
$@AllabuxJaffer抱歉,我们需要先创建子集。我已经更新了答案。你现在能查一下吗?
data.lab %>%
 group_by(bp, sugar) %>%
 filter(n() > 1) %>%
 mutate(pair = seq_along(Name))
data.lab %>%
 group_by(bp, sugar) %>%
 filter(n() > 1) %>%
 mutate(pair = row_number())
data.lab %>%
 group_by_at(vars(-matches("(Name)"))) %>%
 filter(n() > 1) %>%
 mutate(pair = seq_along(Name))
data.lab %>%
 group_by_at(vars(-matches("(Name)"))) %>%
 filter(n() > 1) %>%
 mutate(pair = row_number())
dat1 <- data.lab[duplicated(data.lab[c("bp", "sugar")]) | 
                 duplicated(data.lab[c("bp", "sugar")], fromLast = TRUE) , ]

dat1$pair <- with(dat1, ave(Name, bp, sugar, FUN = seq_along))
dat1

#  Name bp sugar pair
#1    A 12    19    1
#2    b 11    23    1
#3    c 12    19    2
#4    d 11    23    2