如何计算已知缺失数据的平均值

时间:2013-02-03 00:02:11

标签: r

我有一个跨越多年的大型数据集,包含许多变量(年份,网站,位置,图片编号,分类和计数)。年份,站点,位置的唯一变量在整个数据集中是稳定的,并且拍摄的照片数量大多是稳定的(我偶尔会忘记在一个位置拍摄所有照片)。但是,由于我已经设置了Taxonomy变量,如果某组照片中没有某个Taxon,则该网站的位置数据中不会包含它(没有零数据)。

但是,当需要计算多年的平均密度时,重要的是在计算中表示零数据。

以下是我的数据表的示例。

Year<-c(2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005 ,2005, 2005, 2005, 2005 ,2005 ,2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005 ,2005, 2005 ,2005, 2005, 2005 ,2005 ,2005 ,2005, 2005 ,2005 ,2005, 2005, 2005, 2005, 2005 ,2006, 2006, 2006, 2006, 2006, 2006 ,2006 ,2006, 2006, 2006, 2006 ,2006 ,2006 ,2006 ,2006 ,2006 ,2006 ,2006, 2006, 2006, 2006, 2006 ,2006 ,2006, 2006 ,2006, 2006, 2006,2006, 2006, 2006 ,2006 ,2006, 2006 ,2006, 2006 ,2006 ,2006, 2006, 2006, 2006 ,2006, 2006, 2006, 2006, 2006 ,2006,2006,2006,2006,2006)

Site<- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,2,2,2,2)

Location<-c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3,3, 3, 3, 3, 3, 3,3,3,3,3)

Photo<-c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 ,1 ,2, 3, 4, 1, 2 ,3 ,4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1 ,2 ,3 ,4 ,1 ,2 ,3 ,4 ,1 ,2 ,3 ,4 ,1 ,2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 4,1,2,3,4)

Taxonomy<-c('B' ,'B' ,'B' ,'B', 'C', 'C', 'C', 'C', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C','C', 'C', 'C', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'A', 'A', 'A', 'A','B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B','A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'A', 'A', 'A', 'A', 'B', 'B', 'B','C', 'C', 'C', 'C')


Count<-rnorm(119,mean=5)

DF<-data.frame(Year,Site,Location,Photo,Taxonomy,Count)

我在这个示例数据集中添加了两个问题。我在2006年倒数第二个站点/位置错过了一张照片(第115行)。 Taxa C不会出现在2005年的第一个位置,而且只发生在2006年的最后一个位置。

如果生活是完美的,所有零数据都包含在我的数据集中,我可以做到

aggregate(Count~Year+Site+Location+Photo+Taxonomy,DF,mean)

aggregate(Count~Year+Site+Taxonomy,DF,mean)

如果我想多年来看看这些网站。

但如果没有“零”数据,我的所有手段都将被取消。

我试图写一些添加了所有零数据的代码,但数据集变得怪异,我宁愿不去那条路。

2 个答案:

答案 0 :(得分:1)

由于Pandas或R :-)在方法计算中明确排除缺失数据,因此您需要在框架工作之外通过总计相关项目并将其除以所有项目的计数来进行...

答案 1 :(得分:0)

aggregate(Count~Year+Site+Location+Photo+Taxonomy,DF, function(ct) mean(ct[ct != 0]) )

这将根据每个组中的非零条目返回平均值。