Перелічіть різні значення у векторі в R


97

Як я можу перерахувати різні значення у векторі, де значення є реплікативними? Я маю на увазі, подібно до наступного виразу SQL:

SELECT DISTINCT product_code
FROM data

Відповіді:


168

Ви маєте на увазі 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

Якщо дані насправді a, factorтоді ви можете скористатися levels()функцією, наприклад

levels( data$product_code )

Якщо це не фактор, але він повинен бути, ви можете перетворити його на коефіцієнт спочатку, використовуючи factor()функцію, наприклад

levels( factor( data$product_code ) )

Іншим варіантом, як згадувалося вище, є unique()функція:

unique( data$product_code )

Основна різниця між ними (коли застосовується до a factor) полягає у тому levels, що повертає вектор символів у порядку рівнів, включаючи будь-які рівні, кодовані, але не зустрічаються. uniqueповерне значення a factorв порядку, коли значення з’являться спочатку, а будь-які не зустрічаються рівні опущені (хоча все ще включені levelsдо поверненого коефіцієнта).


8

Спробуйте скористатися дубльованою функцією в поєднанні з оператором заперечення "!".

Приклад:

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

Сподіваюся, що це допомагає.


7

Ви також можете використовувати пакет sqldf в R.

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.