我有一个数据框donorInfo,有捐赠者信息:
id giftdate giftamt
002 2001-01-05 25.00
033 2001-05-08 50.00
054 2001-09-22 125.00
125 2001-11-05 40.00
042 2001-12-04 75.00
... ... ...
Run Code Online (Sandbox Code Playgroud)
我想创建一个列,显示截至该日期的唯一捐赠者ID的累计数量.我认为它是这样的:
donorInfo$numUnique <- apply/lapply (donorInfo, 1, FUN=nrow(unique(donorInfo$id)))
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,我想知道如何补救.谢谢你的任何建议.
我有一个数据列表作为大数据框架的一部分,它按时间排序,所以我不能改变列表的顺序:
ID <- c("p","fxman27","duncane" ,"duncane" ,"dday1026" ,"duncane","dday1026","dday1026" ,"dday1026" ,"dday1026","cesandjoel","pali777","ranger_2","marymom6" , "deaglekl")
Run Code Online (Sandbox Code Playgroud)
现在我需要一个函数来产生这些ID的计数:
s<-c(1 , 2 ,3 , 3 , 4, 4 ,4 , 4 , 4 ,4 , 5, 6, 7, 8 , 9)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,功能计数不同ID的数量,如果ID在前一行中相同,则保持不变.我不想使用"for"循环,而更喜欢BASE函数.
"s"不是简单的频率表,因为我知道我可以使用聚合.这不是一个分组问题,但"当前Id"的数量是拍卖谢谢