计算具有相同日期的行

时间:2014-01-30 10:03:27

标签: r

我有以下变量:

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

依旧......

我最后想要的是一个新列,其中显示“datevote”列的相同日期的数量:

  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

我尝试了几件事,但似乎比预期更多的工作。谁能帮我? 所有的帮助表示赞赏,谢谢。

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分: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