R - Fehler "variable lengths differ"
> #transforming length of time
> transLOT<-log(LengthofTimemin)
>
> #checking for outliers
> fit<-lm(transLOT~DielEnd+TideEnd+TideStart+Moonphase+TideStart*Moonphase, data=resdata)
> outlierTest(fit)
rstudent unadjusted p-value Bonferonni p
295 4.445284 1.1025e-05 0.0052808
>
> #getting rid of the outlier data in row 295
> rdata<-resdata[-295, ]
> print(rdata[294:296,5:10])
# A tibble: 3 × 6
DepartureDate DepartureTime LengthofTime LengthofTimemin EventLengthCategories
<dttm> <dttm> <dttm> <dbl> <chr>
1 2016-09-19 1899-12-30 23:46:46 1899-12-30 00:05:49 5.816667 5-15
2 2016-09-20 1899-12-30 01:55:28 1899-12-30 00:01:20 1.333333 <5
3 2016-09-20 1899-12-30 04:07:28 1899-12-30 00:01:21 1.350000 <5
> newfit<-lm(transLOT~DielEnd+TideEnd+TideStart+Moonphase+TideStart*Moonphase, na.action=na.exclude, data=rdata)
Error in model.frame.default(formula = transLOT ~ DielEnd + TideEnd + :
variable lengths differ (found for 'DielEnd')
> #now all of a sudden the variable lengths differ
Verstehe ich, dass das problem mit dem entfernen der Zeile der Daten, sondern bin davon ausgegangen, dass na.ausschließen würde-Konto für Sie. Nach gründlicher Suche bin ich nicht feststellen können, warum dieser Fehler Auftritt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies geschieht, weil im ersten Schritt erstellt man sich einen separaten variable außerhalb Ihres Daten-frame,
transLOT<-log(LengthofTimemin)
. Beim entfernen einer Zeile aus den DatentransLOT
ist unverändert. Noch schlimmer als die unterschiedliche Längen haben, werden Ihre Daten nicht line-up mehr, wenn die verschiedenen Längen wurden ignoriert, Ihre Reihen von Daten "off by one" im Vergleich zu der Reaktion nach der Zeile, die Sie entfernt.Die einfache Lösung ist, erstellen Sie Ihre
transLOT
Variablen in das Daten-frame. Dann, wenn Sie Dinge tun, um die Daten (wie z.B. löschen von Zeilen), die gleiche Sache, die getan wird, umtransLOT
.Beachten Sie, dass ich auch mit der
resdata$LengthofTimemin
eher alsLengthofTimemin
die Sie zu haben scheinen, in Ihrem Arbeitsbereich. Haben Sieattach()
irgendwann? Sie sollten nichtattach
genau aus diesem Grund. Halten Sie die Variablen in das Daten-frame!dplyr
schon (zumindest Ihrerdata
ist ein tibble), somutate
ist eine schöne alternative, die beide hält die Daten in Ihrem data frame und speichert Sie vom müssen zu re-geben Sie den Namen des data Frames Hunderte Male.