2016-12-02 53 views
0

我有一個數據集,看起來像這樣:爲了積極計數例如,R

Name Month 
A  1 
A  7 
A  7 
A  4 
A  3 
A 11 
A 12 
B  5 
B  6 
B 12 
B  4 
B  9 
B 12 
B 10 

而且我想通過姓名月份和組指望它的排名。 所以我希望它看起來像這樣。

Name Month Count 
A  1  1 
A  7  4 
A  7  5 
A  4  2 
A  3  3 
A 11  6 
A 12  7 
B  5  2 
B  6  3 
B 12  6 
B  4  1 
B  9  4 
B 12  7 
B 10  5 

我想在R中做到這一點,我真的很想使用dplyr。 有什麼建議嗎?

編輯 我沒有提到,即使有重複,我也希望等級遞增。我更新了數據以反映相同的事情。

+5

這僅僅是'按組rank'。 'ave'可以幫助你做到這一點。 –

+3

*計算月份的排名並按名稱*進行分組。這基本上描述了你應該怎麼做。 'group_by()'和'rank()'函數是你正在尋找的。 – Psidom

+3

由於您沒有任何關係,因此使用哪個排名函數並不重要,但有一個選項:'df%>%group_by(Name)%>%mutate(Count = dense_rank(Month))' – alistaire

回答

2

正如在評論中提到的,你應該管道group_by和一些排名功能。只有提供所需輸出的功能是row_number

所以我想應該是這樣的:

Name = c(rep('A', 7), rep('B', 7)) 
Month = c(1, 7, 7, 4, 3, 11, 12, 5, 6, 12, 4, 9, 12, 10) 
Data = data.frame(Name, Month) 

library(dplyr) 

Data %>% group_by(Name) %>% mutate(Count = row_number(Month))