2016-03-24 8 views
2

Gibt es eine Möglichkeit, dplyr :: distinct anzugeben, sollten alle Spaltennamen verwendet werden, ohne auf eine nicht standardmäßige Auswertung zurückzugreifen?R dplyr - distinct für alle Spalten

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 

vs

df %>% distinct(everything(),.keep_all=FALSE) # with syntax of this form 
+0

Gibt 'df%>% distinct()' Ihnen was Sie wollen? – sboysel

+0

Leider nicht. Ich glaube, den Datenrahmen als das einzige Argument übergeben zu haben, das verwendet wurde, um das korrekte Ergebnis zu erzielen, jedoch haben neue Veröffentlichungen Änderungen an der unterschiedlichen Funktion gesehen. Ich bekomme zur Zeit: 'Fehler: Keine Variablen ausgewählt' –

+0

' df%>% unique' funktioniert als eine Alternative, wenn auch nicht die befriedigendste Antwort. –

Antwort

2

Sie können verschieden die alle Spalten mit dem Code unten.

library(dplyr) 
library(data.table) 

df <- data_frame(
    id = c(1, 1, 2, 2, 3, 3), 
    value = c("a", "a", "b", "c", "d", "d") 
) 
# A tibble: 6 × 2 
# id value 
# <dbl> <chr> 
# 1  1  a 
# 2  1  a 
# 3  2  b 
# 4  2  c 
# 5  3  d 
# 6  3  d 

# distinct with Non-Standard Evaluation 
df %>% distinct() 

# distinct with Standard Evaluation 
df %>% distinct_() 

# Also, you can set the column names with .dots. 
df %>% distinct_(.dots = names(.)) 
# A tibble: 4 × 2 
# id value 
# <dbl> <chr> 
# 1  1  a 
# 2  2  b 
# 3  2  c 
# 4  3  d 

# distinct with data.table 
unique(as.data.table(df)) 
# id value 
# 1: 1  a 
# 2: 2  b 
# 3: 2  c 
# 4: 3  d 
Verwandte Themen