我有一个数据列表作为大数据框架的一部分,它按时间排序,所以我不能改变列表的顺序:
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"的数量是拍卖谢谢
您可以计算非重复ID:
cumsum(!duplicated(ID))
# [1] 1 2 3 3 4 4 4 4 4 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)