使用独特的ifelse dplyr进行突变

时间:2019-02-14 10:55:06

标签: r dplyr

我有一个重复名称的数据集。如果名称重复,我想创建一个新列,其值为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)

但是,ich无法在group_by之后返回原始数据帧

1 个答案:

答案 0 :(得分: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))