如果这里已经回答了这个问题,我深表歉意,但我找不到任何关于我的具体问题的信息。
我有年和月的时间序列,以及许多物种的生物量的时间序列数据。我需要为十五个特定物种分离出时间序列。不幸的是,如果在给定的月份没有遇到某个物种的个体,则没有输入任何数据,在我的时间序列中留下了应该是 0 的空白。为了解决这个问题,我试图将物种数据(右手表)左连接到一个完整的时间序列(左手表)上。不幸的是,我的输出连接仍然缺少没有数据的月份。例如,我错过了 1986 年第 1 个月,因为我的右侧表格中没有该月的数据。我认为左连接应该包括这些行,但将右侧的列留空。
我的代码如下。您可以提出任何建议将不胜感激。谢谢!
Species1<-sqldf("SELECT TimeSeries.StartYear, TimeSeries.StartMonthNo, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass
FROM TimeSeries
LEFT OUTER JOIN TrawlBiomassbyMonth
ON TimeSeries.StartYear = TrawlBiomassbyMonth.StartYear
AND TimeSeries.StartMonthNo = TrawlBiomassbyMonth.StartMonthNo
WHERE CommonName = 'White shrimp'
AND RegionCode = 1")
编辑
很抱歉回答我自己的问题,但我想出了如何去做,我想留下这个,以防其他人遇到同样的问题。问题在于 WHERE 参数限制了最终输出,而不仅仅是将右侧表送入连接。我使用的代码如下。
Species1<-sqldf("SELECT StartYear, StartMonthNo, RegionCode, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass
FROM TrawlBiomassbyMonth
WHERE CommonName='White shrimp'
AND RegionCode=1")
Species1TimeSeries<-sqldf("SELECT TimeSeries.StartYear, TimeSeries.StartMonthNo, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass
FROM TimeSeries
LEFT JOIN Species1
ON TimeSeries.StartYear = Species1.StartYear
AND TimeSeries.StartMonthNo = Species1.StartMonthNo")