group=c(1,1,2,2,3,4,4,5,5,6)
Я хочу создать вывод, который выглядит следующим образом:
dup: 4 nodup: 2
dup: 4
nodup: 2
В основном я хочу подсчитать, сколько значений дублируется «dup» и подсчитать, сколько не «nodup»
Вот вариант, получить частоту подсчета значений с помощью table, преобразовать в логическую > 1, а затем выполнить table снова
table
> 1
table(table(group) > 1)
Если нам нужны имена меток как ' dup ',' nodup '
table(c('nodup', 'dup')[1 + (table(group) > 1)]) # dup nodup # 4 2
Другое базовое решение R с использованием duplicated + unique
duplicated
unique
dup <- sum(duplicated(group)) nodup <- length(unique(group))-dup
, такое что
> dup [1] 4 > nodup [1] 2
Также опция base R:
base R
table(rle(sort(group))$lengths > 1) FALSE TRUE 2 4
library(dplyr) data.frame(group) %>% count(group) %>% count(dup = n > 1)