I have already checked the other questions with on this issue, but since the problem seems to be very specific they weren’t helpful.
I have a dataframe like this (this is just a quick example, example data from dput() is provided below):
year species abundance site county 2005 A 2 SH1 Göttingen 2006 A 0 SH1 Göttingen 2007 A NA SH1 Göttingen 2008 A 2 SH1 Göttingen 2009 A NA SH1 Göttingen 2010 A 2 SH1 Göttingen 2011 A NA SH1 Göttingen 2005 B 2 SH1 Göttingen 2006 B 0 SH1 Göttingen 2007 B NA SH1 Göttingen 2008 B 2 SH1 Göttingen 2009 B NA SH1 Göttingen 2010 B 2 SH1 Göttingen 2011 B NA SH1 Göttingen 2005 A 2 SH1 Göttingen 2006 A 0 SH1 Göttingen 2007 A NA SH1 Göttingen 2008 A 2 SH1 Göttingen 2009 A NA SH1 Göttingen 2010 A 2 SH1 Göttingen 2011 A NA SH1 Göttingen 2005 A 2 SH2 Göttingen 2006 A 0 SH2 Göttingen 2007 A NA SH2 Göttingen 2008 A 2 SH2 Göttingen 2009 A NA SH2 Göttingen 2010 A 2 SH2 Göttingen 2011 A NA SH2 Göttingen
It contains the abundance for 11 species on several different sites per county (more than 1500 sites in over 400ish counties) for each year 2005-2011. for each site, in every county, every year, all species have been accounted for, so there is either an NA, or a number in abundance for every year. The number of sites varies per county.
I would like to run the following loop to put the abundance into several columns: It should create a linear model to calculate population trends over these years and put the output in an additional row. In the end I would like to have a trend for every species on every site over the years:
alldata_lm$slope_abundance_plot <- NA alldata_lm$p_slope_abundance_plot <- NA species <- unique(alldata_lm$species) sites <- unique(alldata_lm$site) for (i in (1:length(species))) { for (k in(1:length(sites))) { print(c(i,k)) lm1 <- lm(abundance ~ year, data = alldata_lm[alldata_lm$species == species[i] & alldata_lm$site == sites[k],], na.action=na.omit) alldata_lm$slope_abundance_plot[alldata_lm$species == species[i] & alldata_lm$site == sites[k]] <- coefficients(lm1)[2] if (nrow(coef(summary(lm1)))>1){ alldata_lm$p_slope_abundance_plot[alldata_lm$species == species[i] & alldata_lm$site == sites[k]] <- coef(summary(lm1))[2,4]} } }
However, when I do, it returns the following error:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : alle Fälle NA
The same loop works perfectly with a very similar dataframe, the only difference is that the current dataframe contains far more NA’s.
Deleting the NA’s prior to running the loop does not help. I get the error message no matter if there are any NA’s in the abundance column or not. I think the error might occur somewhere else. The year column does never contain any missing values.
I’d greatly appreciate any help! Thanks
EXAMPLE DATA
structure(list(site = structure(c(700L, 700L, 700L, 700L, 700L, 700L, 700L), .Label = c("bb1", "bb100", "bb101", "bb104", "bb107", "bb108", "bb109", "bb11", "bb111", "bb113", "bb115", "bb116", "bb117", "bb118", "bb119", "bb120", "bb121", "bb122", "bb123", "bb124", "bb125", "bb126", "bb127", "bb129", "bb130", "bb131", "bb132", "bb134", "bb135", "bb138", "bb139", "bb14", "bb140", "bb143", "bb147", "bb15", "bb150", "bb152", "bb154", "bb155", "bb156", "bb157", "bb158", "bb159", "bb163", "bb164", "bb166", "bb167", "bb169", "bb170", "bb171", "bb172", "bb173", "bb174", "bb175", "bb176", "bb177", "bb178", "bb179", "bb180", "bb181", "bb183", "bb186", "bb187", "bb188", "bb19", "bb191", "bb192", "bb193", "bb194", "bb197", "bb198", "bb199", "bb20", "bb200", "bb201", "bb202", "bb203", "bb204", "bb205", "bb207", "bb208", "bb209", "bb21", "bb210", "bb211", "bb212", "bb213", "bb215", "bb216", "bb217", "bb218", "bb219", "bb220", "bb221", "bb224", "bb225", "bb228", "bb23", "bb230", "bb232", "bb234", "bb237", "bb239", "bb242", "bb27", "bb32", "bb35", "bb37", "bb38", "bb39", "bb4", "bb40", "bb41", "bb47", "bb49", "bb53", "bb55", "bb58", "bb59", "bb6", "bb60", "bb63", "bb65", "bb66", "bb7", "bb70", "bb72", "bb73", "bb76", "bb77", "bb79", "bb8", "bb80", "bb81", "bb82", "bb84", "bb85", "bb87", "bb89", "bb9", "bb90", "bb91", "bb92", "bb93", "bb94", "bb96", "bb97", "bb98", "be14", "be15", "be17", "be30", "bw10", "bw100", "bw104", "bw108", "bw111", "bw112", "bw12", "bw120", "bw124", "bw126", "bw13", "bw144", "bw146", "bw175", "bw183", "bw192", "bw193", "bw198", "bw199", "bw200", "bw202", "bw208", "bw210", "bw211", "bw213", "bw215", "bw219", "bw225", "bw226", "bw229", "bw236", "bw243", "bw257", "bw262", "bw266", "bw268", "bw283", "bw294", "bw3", "bw30", "bw307", "bw326", "bw327", "bw338", "bw339", "bw341", "bw35", "bw36", "bw360", "bw368", "bw380", "bw381", "bw397", "bw405", "bw42", "bw53", "bw58", "bw6", "bw7", "bw84", "bw89", "bw91", "bw92", "bw96", "bw97", "by10", "by103", "by109", "by11", "by110", "by111", "by112", "by113", "by114", "by115", "by116", "by117", "by118", "by120", "by122", "by125", "by126", "by127", "by128", "by129", "by130", "by134", "by137", "by14", "by142", "by144", "by146", "by147",