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

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

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).


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.


7

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

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')

0

innym sposobem byłoby użycie dplyrpakietu:

x = c(1,1,2,3,4,4,4)
dplyr::distinct(as.data.frame(x))
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.