2017-05-17 13 views
0

我有一个数据集次数未-repeats一列

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)) 

,我试图让这个统计

business_date  New Card 
20170120    4 
20170121    2 
20170122    2 
2017

的第一天 - 所有独特的新卡(1207330,1873230,1556250,1395950)将新卡。第二天 - 第二天的所有独特卡片将与第一天进行比较,不重复的卡片为新卡片( 1393220,1058940)。第三天 - 需要第一天和第二天都没有的新卡片,如此等等。

回答

2

在基础R,这将通过aggregate完成每日期荷兰国际集团非复制卡:

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

或者在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