计算R中的不同值

Omi*_*deh 0 r count

我有一个数据列表作为大数据框架的一部分,它按时间排序,所以我不能改变列表的顺序:

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"的数量是拍卖谢谢

Psi*_*dom 7

您可以计算非重复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)