使用distinct和ifelse dplyr进行变异

问题描述 投票:1回答:1

我有一个重复名称的数据集。如果名称重复,我想创建一个值为1(TRUE)或0(FALSE)的新列。

这是我使用的代码:

library(dplyr)

dat %>% mutate(Duplicated = ifelse(distinct(`First name` == T, 0, 1)))

Error in mutate_impl(.data, dots) : Evaluation error: no applicable method for 'distinct_' applied to an object of class "logical".

要么

dat %>% mutate(Duplicated = ifelse(distinct(`First name`), 0, 1))

Error in mutate_impl(.data, dots) : Evaluation error: no applicable method for 'distinct_' applied to an object of class "logical".

但是,我得到了您可以在上面看到的错误。

另一个想法是使用group_by然后计算计数。喜欢:

dat %>%
  group_by(`Last name`) %>%
  summarise(N = n()) %>%
  ungroup() %>%
  mutate(Dpulicated = ifelse(N > 1, 1,0)

但是,在group_by之后,ich不能返回原始数据帧

r dplyr
1个回答
1
投票

而不是summarise(N= n()),你可以做mutate(N = n())

我是这样做的:

library(dplyr)

df = data.frame("last_name" = c("Smith","James","Smith","Smith","Messi"),
                "value" = c(15,26,7,38,90))

df = df %>%
  group_by(last_name) %>%
  mutate(n = n(),
         is_dupe = ifelse(n > 1,TRUE,FALSE))
© www.soinside.com 2019 - 2024. All rights reserved.