Ich verwende eine logistische Exposition, um den Brut-Erfolg für Vogelnester zu berechnen. Mein Datensatz ist ziemlich umfangreich und ich habe ~ 2000 Nester mit jeweils einer eindeutigen ID ("ClutchID"). Ich muss die Anzahl der Tage berechnen, die ein bestimmtes Nest ausgesetzt war ("Exposure"), oder einfacher gesagt, den Unterschied zwischen den . 1. und letzten Tag habe ich den folgenden Code:Berechne den Unterschied zwischen den Daten nach Gruppe in R
HS_Hatch$Exposure=NA
for(i in 2:nrow(HS_Hatch)){HS_Hatch$Exposure[i]=HS_Hatch$DateVisit[i]- HS_Hatch$DateVisit[i-1]}
wo HS_Hatch ist mein Dataset und DateVisit ist das tatsächliche Datum das einzige Problem ist, R einen Belichtungswert für das erste Datum ist die Berechnung (was nicht macht. .. Sinn)
Was ich brauche, ist für die Berechnung der Differenz zwischen dem ersten und letzten Termin für eine gegebene Kupplung wirklich habe ich sah auch in den folgenden:
Exposure=ddply(HS_Hatch, "ClutchID", summarize,
orderfrequency = as.numeric(diff.Date(DateVisit)))
df %>%
mutate(Exposure = as.Date(HS_Hatch$DateVisit, "%Y-%m-%d")) %>%
group_by(ClutchID) %>%
arrange(Exposure) %>%
mutate(lag=lag(DateVisit), difference=DateVisit-lag)
Ich lerne immer noch R so jede Hilfe würde sehr geschätzt werden.
Edit: Unten finden Sie eine Probe der Daten-I
HS_Hatch <- structure(list(ClutchID = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L
), DateVisit = c("3/15/2012", "3/18/2012", "3/20/2012", "4/1/2012",
"4/3/2012", "3/18/2012", "3/20/2012", "3/22/2012", "4/3/2012",
"4/4/2012", "3/22/2012", "4/3/2012", "4/4/2012", "3/18/2012",
"3/20/2012", "3/22/2012", "4/2/2012", "4/3/2012", "4/4/2012",
"3/20/2012", "3/22/2012", "3/25/2012", "3/27/2012", "4/4/2012",
"4/5/2012"), Year = c(2012L, 2012L, 2012L, 2012L, 2012L, 2012L,
2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L,
2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L,
2012L), Survive = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -25L), .Names = c("ClutchID",
"DateVisit", "Year", "Survive"), spec = structure(list(cols = structure(list(
ClutchID = structure(list(), class = c("collector_integer",
"collector")), DateVisit = structure(list(), class = c("collector_character",
"collector")), Year = structure(list(), class = c("collector_integer",
"collector")), Survive = structure(list(), class = c("collector_integer",
"collector"))), .Names = c("ClutchID", "DateVisit", "Year",
"Survive")), default = structure(list(), class = c("collector_guess",
"collector"))), .Names = c("cols", "default"), class = "col_spec"))
Willkommen bei Stack Overflow! Können Sie bitte Daten angeben, die uns ein [reproduzierbares Beispiel] liefern (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? –
vielleicht zusammenfassen (Belichtung = diff (Bereich (DatumVisit)))? –
was @BenBolker gesagt hat, nur um hinzuzufügen, dass seine 'summarise' Zeile nach Ihrer' group_by' Zeile gehen soll. Und abhängig von der Klasse "DateVisit" können Sie entweder Ihre erste "mutierte" Zeile verlassen oder die "summarise" Zeile ändern, um "Exposure" anstatt "DateVisit" zu referenzieren. – rosscova