2014-01-30 36 views
1

我有以下變量:計數行與同一日期

 datevote 
1 1981-6-21 
2 1981-6-21 
3 1981-9-23 
4 1982-2-14 
5 1982-2-14 

等等...

我想吃點什麼,到底是新列在其中的數列在同一日期「datevote」 IST顯示:

datevote  numbervotes 
1 1981-6-21  2 
2 1981-6-21  2 
3 1981-9-23  1 
4 1982-2-14  2 
5 1982-2-14  2 

我已經試過幾件事情,但似乎更多的工作比預期的。誰能幫我? 所有的幫助表示讚賞,謝謝。

+0

我想'ave'可能是有益的。 'ave(DF $ datevote,DF $ datevote,FUN = length)'或類似的東西,取決於'str(DF)'的輸出。 –

回答

4

您可以像這樣使用新的dplyr包。

library(dplyr) 
df <- data.frame(datevote = as.Date(c("1981-06-21", "1981-06-21", "1981-06-23", "1981-06-14", "1981-06-14"))) 

mutate(group_by(df, datevote), numbervotes = n(datevote)) 
##  datevote numbervotes 
## 1 1981-06-21   2 
## 2 1981-06-21   2 
## 3 1981-06-23   1 
## 4 1981-06-14   2 
## 5 1981-06-14   2 

等效plyr的解決方案是:

detach(package:dplyr) 
library(plyr) 
ddply(df, "datevote", mutate, numbervotes = length(datevote)) 
+0

感謝您的意見。不幸的是它不起作用。 R給了我一個nchar錯誤(值):無效的多字節字符串265' – Thomas

+0

@Thomas確保擁有最新的CRAN版本的'dplyr'。我也想知道何時複製和粘貼代碼的工作原理? – dickoa

+0

@Thomas您還可以嘗試'plyr'解決方案(請參閱編輯)。 – dickoa

3

Data.table替代:

df <- data.frame(datevote = as.Date(c("1981-06-21", "1981-06-21", "1981-06-23", "1981-06-14", "1981-06-14"))) 
library(data.table) 
df <- data.table(df) 
df[,numbervotes:=.N, by=datevote] 
df