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
źródło
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
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
Jeśli dane są faktycznie a factor
to 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ą. unique
zwróci a factor
w kolejności, w jakiej wartości pojawią się jako pierwsze, z pominiętymi niewystępującymi poziomami (chociaż nadal są uwzględnione w levels
zwracanym współczynniku).
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.
Możesz również użyć pakietu sqldf w R.
Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
innym sposobem byłoby użycie dplyr
pakietu:
x = c(1,1,2,3,4,4,4)
dplyr::distinct(as.data.frame(x))