Подсчет дубликатов в векторе в R - PullRequest
2 голосов
/ 28 февраля 2020
group=c(1,1,2,2,3,4,4,5,5,6)

Я хочу создать вывод, который выглядит следующим образом:

dup: 4

nodup: 2

В основном я хочу подсчитать, сколько значений дублируется «dup» и подсчитать, сколько не «nodup»

Ответы [ 4 ]

5 голосов
/ 28 февраля 2020

Вот вариант, получить частоту подсчета значений с помощью table, преобразовать в логическую > 1, а затем выполнить table снова

table(table(group) > 1)

Если нам нужны имена меток как ' dup ',' nodup '

table(c('nodup', 'dup')[1 + (table(group) > 1)])
#    dup nodup 
#    4     2 
2 голосов
/ 28 февраля 2020

Другое базовое решение R с использованием duplicated + unique

dup <- sum(duplicated(group))
nodup <- length(unique(group))-dup

, такое что

> dup
[1] 4
> nodup
[1] 2
1 голос
/ 28 февраля 2020

Также опция base R:

table(rle(sort(group))$lengths > 1)

FALSE  TRUE 
    2     4 
1 голос
/ 28 февраля 2020
library(dplyr)
data.frame(group) %>%
    count(group) %>%
    count(dup = n > 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...