我有一个重复名称的数据集。如果名称重复,我想创建一个新列,其值为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之后返回原始数据帧
答案 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))