Расширить диапазоны, определенные столбцами «от» и «до»
У меня есть фрейм данных, содержащий"name"
президентов США, годы, когда они начинаются и заканчиваются в должности, ("from"
а также"to"
колонны). Вот образец:
name from to
Bill Clinton 1993 2001
George W. Bush 2001 2009
Barack Obama 2009 2012
... и выход изdput
:
dput(tail(presidents, 3))
structure(list(name = c("Bill Clinton", "George W. Bush", "Barack Obama"
), from = c(1993, 2001, 2009), to = c(2001, 2009, 2012)), .Names = c("name",
"from", "to"), row.names = 42:44, class = "data.frame")
Я хочу создать фрейм данных с двумя столбцами ("name"
а также"year"
), с рядом за каждый год, что президент был в офисе. Таким образом, мне нужно создать регулярную последовательность с каждым годом из & quot;from
& quot ;, чтобы"to"
, Вот мой ожидаемый результат:
name year
Bill Clinton 1993
Bill Clinton 1994
...
Bill Clinton 2000
Bill Clinton 2001
George W. Bush 2001
George W. Bush 2002
...
George W. Bush 2008
George W. Bush 2009
Barack Obama 2009
Barack Obama 2010
Barack Obama 2011
Barack Obama 2012
Я знаю, что я могу использоватьdata.frame(name = "Bill Clinton", year = seq(1993, 2001))
расширить вещи для одного президента, но я не могу понять, как повторять для каждого президента.
Как мне это сделать? Я чувствую, что должен это знать, но я рисую пробел.
Update 1ОК, я попробовал оба решения, и я получаю сообщение об ошибке:
foo<-structure(list(name = c("Grover Cleveland", "Benjamin Harrison", "Grover Cleveland"), from = c(1885, 1889, 1893), to = c(1889, 1893, 1897)), .Names = c("name", "from", "to"), row.names = 22:24, class = "data.frame")
ddply(foo, "name", summarise, year = seq(from, to))
Error in seq.default(from, to) : 'from' must be of length 1