如何按组创建计数器/计数?
问题描述:
我有一些数据的形状如下:如何按组创建计数器/计数?
更新:我的数据有一个额外的变量我想分组。我用Richie提供的下面的解决方案ddply,但没有工作。
Country,group, date
US,A,'2011-10-01'
US,B,'2011-10-01'
US,C,'2011-10-01'
MX,D,'2011-10-01'
UK,E,'2011-10-02'
UK,B,'2011-10-02'
UK,A,'2011-10-02'
UK,C,'2011-10-02'
数据帧已经排序,所以A先到先,B先到先,等等。我想创建是日期排名变量是这样的:
Country,group, date,rank
US,A,'2011-10-01',1
US,B,'2011-10-01',2
US,C,'2011-10-01',3
MX,D,'2011-10-01',1
UK,E,'2011-10-02',1
UK,B,'2011-10-02',2
UK,A,'2011-10-02',3
UK,C,'2011-10-02',4
....
答
首先,检查你的约会真的是在用class(your_dataset$date)
日期格式(不是factor
)。如果不是,请使用lubridate
中的ymd
进行转换。
二,使用rank
获得排名。
your_dataset $排名<(比你想象吧!) - 等级(your_dataset $日期)
有打破,你可能想要探索的关系几种不同的方法。
在重读您的问题时,我看到您不想排列日期,您希望在日期内有一个计数器。为此,请首先检查您的数据集是否按日期排序。
o <- with(your_dataset, order(date))
your_dataset <- your_dataset[o, ]
然后在每个日期块上拨打。
counts <- as.numeric(table(your_dataset$date))
your_dataset$rank <- unlist(lapply(counts, seq_len))
对不起,但我不同意 - 我在2011年问了这个问题,并在2011年得到了答案,你建议今年回答这个问题!很奇怪,你@ procrastinatus-maximus - 有点方便 – Altons 2016-10-14 06:45:50
确实,我今年添加了一个答案,意在增加已经存在的比这个问题更早的答案。令我惊讶的是OP改变了我的接受答案。因此它是一个有效的重复imo。 – Jaap 2016-10-14 07:31:40