2011-12-22 56 views
3

我有一些數據的形狀如下:如何按組創建計數器/計數?

更新:我的數據有一個額外的變量我想分組。我用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 
    .... 
+0

對不起,但我不同意 - 我在2011年問了這個問題,並在2011年得到了答案,你建議今年回答這個問題!很奇怪,你@ procrastinatus-maximus - 有點方便 – Altons 2016-10-14 06:45:50

+1

確實,我今年添加了一個答案,意在增加已經存在的比這個問題更早的答案。令我驚訝的是OP改變了我的接受答案。因此它是一個有效的重複imo。 – Jaap 2016-10-14 07:31:40

回答

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)) 
+0

Thaksfür提示 - 我刪除了我的答案。如果需要進一步澄清,奧爾頓肯定會評論。 – Seb 2011-12-22 14:10:13

+0

這是工作,但我用錯誤的方式制定了我的問題!查看更新。 – Altons 2011-12-22 14:32:50

+0

我需要通過2個變量而不是1個來創建排名,正如我在最初的問題中所述。對不起,我的痛苦 – Altons 2011-12-22 14:39:34