Wypisz różne wartości w wektorze w R.

98

Jak mogę wymienić różne wartości w wektorze, w którym wartości są replikacyjne? Mam na myśli podobnie do następującej instrukcji SQL:

SELECT DISTINCT product_code
FROM data
Mehper C. Palavuzlar
źródło

Odpowiedzi:

170

Czy masz na myśli unique:

R> x = c(1,1,2,3,4,4,4)
R> x
[1] 1 1 2 3 4 4 4
R> unique(x)
[1] 1 2 3 4
csgillespie
źródło
12

Jeśli dane są faktycznie a factorto możesz skorzystać z levels()funkcji np

levels( data$product_code )

Jeśli nie jest to czynnik, a powinien być, możesz najpierw przekonwertować go na współczynnik, używając factor()funkcji, np

levels( factor( data$product_code ) )

Inną opcją, jak wspomniano powyżej, jest unique()funkcja:

unique( data$product_code )

Główna różnica między tymi dwoma (w przypadku zastosowania do a factor) polega na tym, levelsże zwróci wektor znakowy w kolejności poziomów, w tym wszelkie poziomy, które są zakodowane, ale nie występują. uniquezwróci a factorw kolejności, w jakiej wartości pojawią się jako pierwsze, z pominiętymi niewystępującymi poziomami (chociaż nadal są uwzględnione w levelszwracanym współczynniku).

isapir
źródło
8

Spróbuj użyć zduplikowanej funkcji w połączeniu z operatorem negacji „!”.

Przykład:

wdups <- rep(1:5,5)
wodups <- wdups[which(!duplicated(wdups))]

Mam nadzieję, że to pomoże.

Al R.
źródło
7

Możesz również użyć pakietu sqldf w R.

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
Clay Burns
źródło
0

innym sposobem byłoby użycie dplyrpakietu:

x = c(1,1,2,3,4,4,4)
dplyr::distinct(as.data.frame(x))
AlexB
źródło