R 查找重复的值并具有引用
我的数据=data.labR 查找重复的值并具有引用,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.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