2014-01-30 2 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 
Смежные вопросы