2016-04-21 2 views
0

Моя цель - подсчитать количество дубликатов в столбце.
Итак, у меня есть столбец 3516 об. из 1 переменной,
, все даты примерно с 144 дубликатами каждый с 1/4/16 до 7/3/16.
Пример: (я положил 1 дубликат каждого, например, саке)
1/4/16
1/4/16
31/3/16
31/3/16
30/3/16
30/3/16
29/3/16
29/3/16
28/3/16
28/3/16
поэтому я использовал функцию date = count (date)
, где date - дата моего df.
Но как только я его выполню, моя последовательность дат больше не в порядке.
Надеюсь, что кто-то может решить мою проблему.Подсчитайте количество дубликатов для столбца

+0

Каков ваш ожидаемый выход? –

+0

Я хочу создать еще один столбец и указать номер дубликата рядом с датой. –

ответ

3

Если нам нужно подсчитать общее количество дублей

sum(table(df1$date)-1) 
#[1] 5 

Предположим, что нам нужно отсчет каждого дня, один из вариантов было бы сгруппировать по «дате» и получить количество строк. Это можно сделать с помощью data.table.

library(data.table) 
setDT(df1)[, .N, date] 
+1

Спасибо, это то, что я ищу! –

1

Если вы хотите, чтобы подсчет количества дубликатов в столбце, вы можете использовать duplicated

sum(duplicated(df$V1)) 
#[1] 5 

Предполагая V1 в качестве имени столбца.

EDIT

В соответствии с обновлением, если вы хотите, чтобы количество каждого данных, вы можете использовать функцию table, которая даст вам точно, что

table(df$V1) 

#1/4/16 28/3/16 29/3/16 30/3/16 31/3/16 
# 2  2  2  2  2 
+0

Прошу прощения, если я не правильно сформулировал свой вопрос, Мой ожидаемый результат - удалить дубликат и иметь другой столбец, в котором перечислены количество дубликатов, которые были подсчитаны –

+0

@AmosOng Привет! Благодарю. Ответ обновлен. –

2

Один из способов заключается в создании данных кадр с уникальными значениями ваших исходных данных, которые сохранят порядок, а затем используют left_join из пакета dplyr для объединения двух фреймов данных. Обратите внимание, что имя столбца должно быть одинаковым.

Initial_data <- structure(list(V1 = structure(c(1L, 1L, 5L, 5L, 4L, 4L, 3L, 3L, 
2L, 2L, 2L), .Label = c("1/4/16", "28/3/16", "29/3/16", "30/3/16", 
"31/3/16"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA, 
-11L)) 

df1 <- unique(Initial_data) 
count1 <- count(df1) 

left_join(df1, count1, by = 'V1') 
#  V1 freq 
#1 1/4/16 2 
#2 31/3/16 2 
#3 30/3/16 2 
#4 29/3/16 2 
#5 28/3/16 3 
Смежные вопросы