我有以下变量:
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
我尝试了几件事,但似乎比预期更多的工作。谁能帮我? 所有的帮助表示赞赏,谢谢。
答案 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