2017-05-17 2 views
0

J'ai un ensemble de donnéesCount non -repeats pour une colonne

dput(Data) 
    structure(list(Date = c(20170120L, 20170120L, 20170120L, 20170120L, 
    20170120L, 20170121L, 20170121L, 20170121L, 20170121L, 20170121L, 
    20170121L, 20170122L, 20170122L, 20170122L, 20170122L, 20170122L, 
    20170123L, 20170123L, 20170123L, 20170123L), Card = c(1207330L, 
    1873230L, 1556250L, 1395950L, 1395950L, 1393220L, 1058940L, 1556250L, 
    1395950L, 1395950L, 1058940L, 1207330L, 1058940L, 1700880L, 1395950L, 
    1055360L, 1395950L, 1556250L, 1207330L, 1395950L)), .Names = c("Date", 
    "Card"), class = "data.frame", row.names = c(NA, -20L)) 

et je suis en train d'obtenir cette stat

business_date  New Card 
20170120    4 
20170121    2 
20170122    2 
2017

le premier jour - toutes les cartes nouvelles uniques (1207330,1873230,1556250,1395950) seront nouvelles cartes . Le deuxième jour - toutes les cartes uniques pour ce deuxième jour seront comparées au premier jour et celles qui ne sont pas répétées sont Nouvelles cartes ( 1393220,1058940). Le troisième jour - besoin de nouvelles cartes qui ne sont pas là à la fois le premier et le deuxième jour (1700880,1055360) et ainsi de suite.

Répondre

2

dans la base R cela serait fait par aggregate les cartes non ing dupliquée par Date:

aggregate(!duplicated(df$Card), by = list(df$Date), FUN = sum) 
# Group.1 x 
#1 20170120 4 
#2 20170121 2 
#3 20170122 2 
#4 2017

Ou dans dplyr:

library(dplyr) 
df %>% 
    mutate(count = !duplicated(Card)) %>% 
    group_by(Date) %>% 
    summarise(n = sum(count)) 

## A tibble: 4 × 2 
#  Date  n 
#  <int> <int> 
#1 20170120  4 
#2 20170121  2 
#3 20170122  2 
#4 2017