[英]r - check if value is unique in dataframe column
我正在我的 dataframe 中创建一个新列 (Flag),它根据另一列 (Number) 识别唯一或重复的数字。 我曾尝试使用重复的 function,但这只会将重复的值标识为重复值,而将原始值保留为非重复值(如下面的编号 100001 所示):
Number Flag
100000 unique
100001 unique
100002 unique
100001 duplicate
100003 unique
如果某个值在列中多次出现,我如何让我的 if-else 语句将它识别为重复值,如下所示:
Number Flag
100000 unique
100001 duplicate
100002 unique
100001 duplicate
100003 unique
一种方法是group_by(Number)
并检查每个组是否有多个观察值n() > 1
。
我们可以在ifelse
语句中使用它来创建所述Flag
。
library(dplyr)
dat <- tibble(Number = c(
100000,
100001,
100002,
100001,
100003))
dat %>%
group_by(Number) %>%
mutate(Flag = ifelse(n() > 1,
"duplicate",
"unique")) %>%
ungroup()
#> # A tibble: 5 × 2
#> Number Flag
#> <dbl> <chr>
#> 1 100000 unique
#> 2 100001 duplicate
#> 3 100002 unique
#> 4 100001 duplicate
#> 5 100003 unique
由reprex package (v0.3.0) 创建于 2022-10-02
unique()
function 有助于构建唯一集,然后使用if...else...
语句来识别重复值。
这是一个基本的 R 方法。 您可以使用duplicated
,但也可以包括第二个duplicated
,其中重复也被认为是反向的(使用 fromLast)。
dat$Flag <- ifelse(
duplicated(dat$Number) | duplicated(dat$Number, fromLast = TRUE),
"duplicate",
"unique"
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.