Erweitern Sie Bereiche, die durch die Spalten "von" und "bis" definiert sind
Ich habe einen Datenrahmen mit"name"
der US-Präsidenten, die Jahre, in denen sie im Amt beginnen und enden, ("from"
und"to"
Säulen). Hier ist ein Beispiel:
name from to
Bill Clinton 1993 2001
George W. Bush 2001 2009
Barack Obama 2009 2012
... und die Ausgabe vondput
:
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")
Ich möchte einen Datenrahmen mit zwei Spalten erstellen ("name"
und"year"
), mit einer Reihe für jedes Jahr, in dem ein Präsident im Amt war. Daher muss ich mit jedem Jahr eine regelmäßige Sequenz erstellen von "from
", zu"to"
. Hier ist meine Erwartung:
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
Ich weiß, dass ich verwenden kanndata.frame(name = "Bill Clinton", year = seq(1993, 2001))
Dinge für einen einzelnen Präsidenten zu erweitern, aber ich kann nicht herausfinden, wie man für jeden Präsidenten iteriert.
Wie mache ich das? Ich habe das Gefühl, dass ich das wissen sollte, aber ich zeichne eine Lücke.
Update 1OK, ich habe beide Lösungen ausprobiert und erhalte eine Fehlermeldung:
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