我有一个重复名称的数据集。如果名称重复,我想创建一个值为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不能返回原始数据帧
而不是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))