2016-09-25 2 views
1

У меня есть dataframe с тысячами строк, с двумя столбцами моего интереса, ID и датой. Некоторые идентификаторы повторяются, но не даты. Я хочу иметь только одну строку для каждого идентификатора, а затем хранить разные даты в столбцах, например: UniqueID, date1, date2 и т. Д.Агрегатирование строк и добавление новых переменных

Кто-нибудь знает, что это лучший способ сделать это? Я использую R, есть ли оптимальный способ сделать это в R?

ответ

1

Вы имеете в виду что-то вроде этого?

require(dplyr) 
require(tidyr) 
dates <- c("02/26/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92") 
dat <- data.frame(id = c(1,1,2,3,2), date = as.Date(dates, "%m/%d/%y")) 

Дат выглядит следующим образом:

id  date 
1 1 1992-02-26 
2 1 1992-02-27 
3 2 1992-01-14 
4 3 1992-02-28 
5 2 1992-02-01 

С следующим трюком

dat %>% 
    select(id, date) %>% #here you select the columns that you want to use 
    group_by(id) %>% 
    mutate(seq = paste0("date", row_number(id))) %>% 
    spread(seq, date) 

стали это:

Source: local data frame [3 x 3] 
Groups: id [3] 

    id  date1  date2 
* <dbl>  <date>  <date> 
1  1 1992-02-26 1992-02-27 
2  2 1992-01-14 1992-02-01 
3  3 1992-02-28  <NA> 
+0

Да, я имею в виду именно это. Спасибо! – Xbel

Смежные вопросы