r-对聚合函数中的唯一值求和,并将NA用作0

r-对聚合函数中的唯一值求和,并将NA用作0,r,function,conditional-statements,aggregate,R,Function,Conditional Statements,Aggregate,我有一张像这样的桌子: ppp<-data.frame(client=c(1,1,1,3,3,4), calldate=c('2014-08-07', NA,'2014-08-06',NA, '2014-08-08',NA), paydate=c('2014-08-07', '2014-08-09', NA, '2014-08-06',NA,'2014-08-06' )) 正如你所看到的,我丢失了3号客户,我希望所有客户都

我有一张像这样的桌子:

ppp<-data.frame(client=c(1,1,1,3,3,4), 
                calldate=c('2014-08-07', NA,'2014-08-06',NA, '2014-08-08',NA),
                paydate=c('2014-08-07', '2014-08-09', NA, '2014-08-06',NA,'2014-08-06' ))
正如你所看到的,我丢失了3号客户,我希望所有客户都有,如果他们没有接到电话,则为零

  client calldate
      1        2
      3        1
      3        0
我如何计算日期,如果没有日期,则输入0? 我还尝试:

my.fun<-function (x) {length(unique(x))}

my.fun如果您使用参数
na.action=na.pass
,它会起作用。否则,
aggregate
将忽略
NA

aggregate(calldate ~ client, ppp, my.fun, na.action = na.pass)
#   client calldate
# 1      1        2
# 2      3        1
# 3      4        0
my.fun<-function (x) {length(unique(x))}
my.fun<-function (x) {if (is.na(x)) {0} else {length(unique(x))}}
aggregate(calldate ~ client, ppp, my.fun, na.action = na.pass)
#   client calldate
# 1      1        2
# 2      3        1
# 3      4        0