计算每个摄像机每小时不同昆虫订单的平均值并绘图
Calculating the mean of different insect orders per camera per hour and plotting
您好,我的数据集由不同的相机组成,每个日期和小时都有观察结果,它看起来大致如下:
d <- read.table(text=
'Camera datehour order observations
1 2019051212 Araneae 2
1 2019051213 Araneae 4
1 2019051214 Lepidoptera 3
1 2019051215 Lepidoptera 2
2 2019051213 Lepidoptera 5
4 2019051214 Araneae 3
4 2019060423 Araneae 2
5 2019070503 Araneae 1
5 2019070503 Araneae 6 ', header=TRUE)
如您所见,摄像机 1 拍摄了四个小时,摄像机 2 拍摄了一个小时,摄像机 4 拍摄了两个小时,摄像机 5 拍摄了一个小时。我想添加一个额外的列,其中包含每个订单每小时每个摄像头的平均值,应该如下所示:
Camera datehour order observations mean
1 2019051212 Araneae 2 0.5
1 2019051213 Araneae 4 1
1 2019051214 Lepidoptera 3 0.75
1 2019051215 Lepidoptera 2 0.5
2 2019051213 Lepidoptera 5 5
4 2019051214 Araneae 3 1.5
4 2019051223 Araneae 2 1
5 2019070503 Araneae 1 1
5 2019070503 Lepidoptera 6 6
编辑:“平均值的计算方法是将每个摄像机的唯一 'datehour' 计数除以观察值。
示例:相机 1 有 4 个独特的 'datehour' 因此 Araneae(2) 的第一次观察的平均值是 0.5"
最终,我想绘制在 x 轴上具有顺序且在 y 轴上具有平均值的数据(忽略摄像机编号)。这是正确的方法吗?我可以用这个计算标准误差吗?
我尝试了 google,但老实说,一切似乎都让人不知所措,我找不到我想要的答案。
提前致谢!
这是一个棘手的问题。不是最优雅的解决方案,但它确实有效。在 Base-R
d$mean <- unlist(lapply(split(d,d$Camera), function(x) x$observations/sum( sub(" .*","",unique(paste(d$Camera,d$datehour))) %in% x$Camera[1])))
> d
Camera datehour order observations mean
1 1 2019051212 Araneae 2 0.50
2 1 2019051213 Araneae 4 1.00
3 1 2019051214 Lepidoptera 3 0.75
4 1 2019051215 Lepidoptera 2 0.50
5 2 2019051213 Lepidoptera 5 5.00
6 4 2019051214 Araneae 3 1.50
7 4 2019060423 Araneae 2 1.00
8 5 2019070503 Araneae 1 1.00
9 5 2019070503 Araneae 6 6.00
您好,我的数据集由不同的相机组成,每个日期和小时都有观察结果,它看起来大致如下:
d <- read.table(text=
'Camera datehour order observations
1 2019051212 Araneae 2
1 2019051213 Araneae 4
1 2019051214 Lepidoptera 3
1 2019051215 Lepidoptera 2
2 2019051213 Lepidoptera 5
4 2019051214 Araneae 3
4 2019060423 Araneae 2
5 2019070503 Araneae 1
5 2019070503 Araneae 6 ', header=TRUE)
如您所见,摄像机 1 拍摄了四个小时,摄像机 2 拍摄了一个小时,摄像机 4 拍摄了两个小时,摄像机 5 拍摄了一个小时。我想添加一个额外的列,其中包含每个订单每小时每个摄像头的平均值,应该如下所示:
Camera datehour order observations mean
1 2019051212 Araneae 2 0.5
1 2019051213 Araneae 4 1
1 2019051214 Lepidoptera 3 0.75
1 2019051215 Lepidoptera 2 0.5
2 2019051213 Lepidoptera 5 5
4 2019051214 Araneae 3 1.5
4 2019051223 Araneae 2 1
5 2019070503 Araneae 1 1
5 2019070503 Lepidoptera 6 6
编辑:“平均值的计算方法是将每个摄像机的唯一 'datehour' 计数除以观察值。
示例:相机 1 有 4 个独特的 'datehour' 因此 Araneae(2) 的第一次观察的平均值是 0.5"
最终,我想绘制在 x 轴上具有顺序且在 y 轴上具有平均值的数据(忽略摄像机编号)。这是正确的方法吗?我可以用这个计算标准误差吗?
我尝试了 google,但老实说,一切似乎都让人不知所措,我找不到我想要的答案。
提前致谢!
这是一个棘手的问题。不是最优雅的解决方案,但它确实有效。在 Base-R
d$mean <- unlist(lapply(split(d,d$Camera), function(x) x$observations/sum( sub(" .*","",unique(paste(d$Camera,d$datehour))) %in% x$Camera[1])))
> d
Camera datehour order observations mean
1 1 2019051212 Araneae 2 0.50
2 1 2019051213 Araneae 4 1.00
3 1 2019051214 Lepidoptera 3 0.75
4 1 2019051215 Lepidoptera 2 0.50
5 2 2019051213 Lepidoptera 5 5.00
6 4 2019051214 Araneae 3 1.50
7 4 2019060423 Araneae 2 1.00
8 5 2019070503 Araneae 1 1.00
9 5 2019070503 Araneae 6 6.00