R dplyr-所有列上的不同帐户

R dplyr-所有列上的不同帐户,r,dplyr,R,Dplyr,有没有办法指定dplyr::distinct应该使用所有列名而不使用非标准计算 df <- data.frame(a=c(1,1,2),b=c(1,1,3)) df %>% distinct(a,b,.keep_all=FALSE) # behavior I'd like to replicate 您可以使用下面的代码区分所有列 库(dplyr) 库(数据表) df%distinct() #有标准的评价 df%>%不同的 #此外,还可以使用.dots设置列名。

有没有办法指定dplyr::distinct应该使用所有列名而不使用非标准计算

df <- data.frame(a=c(1,1,2),b=c(1,1,3))

df %>% distinct(a,b,.keep_all=FALSE)          # behavior I'd like to replicate

您可以使用下面的代码区分所有列

库(dplyr)
库(数据表)
df%distinct()
#有标准的评价
df%>%不同的
#此外,还可以使用.dots设置列名。
df%>%不同的(点=名称()
#一个tibble:4×2
#id值
#  
#11A
#2 b
#3.2 c
#三维
#与data.table不同
唯一(如数据表(df))
#id值
#1:1 a
#2:2 b
#3:2 c
#4:3d

从dplyr的1.0.5版开始,以下两个选项产生相同的输出

df <- data.frame(a = c(1, 1, 2),
                 b = c(1, 1, 3))

df %>% distinct(a, b)

  a b
1 1 1
2 2 3

df %>% distinct(across(everything()))

  a b
1 1 1
2 2 3
df%不同(a、b)
a b
1 1 1
2 2 3
df%>%不同(跨越(所有内容()))
a b
1 1 1
2 2 3
没有理由指定
。保留_all=FALSE
参数,因为这是默认值


您也可以使用
tibble()
而不是
data.frame()

df%>%distinct()
提供了您想要的吗?不幸的是,它没有。我相信传递数据帧是用来产生正确结果的唯一参数,但是最近的版本已经看到了distinct函数的变化。我目前得到:
错误:没有选择变量
df%>%unique
作为替代方案,尽管这不是最令人满意的答案。这是
dplyr
中的新错误吗?我发誓我看到它工作得很好。未选择任何变量时出现相同错误。@Gopala,不是错误。只是新版本中的设计决策。我经常使用distinct()而不使用参数,现在使用unique()也是为了同样的目的。
df <- data.frame(a = c(1, 1, 2),
                 b = c(1, 1, 3))

df %>% distinct(a, b)

  a b
1 1 1
2 2 3

df %>% distinct(across(everything()))

  a b
1 1 1
2 2 3