嗨,我有由不同相机组成的数据集,每一天和每小时都有观察,它看起来大概如下:
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已经拍摄了4个小时,相机2拍了1个小时,相机4拍了2个小时,摄像机51个小时了。我想添加一个额外的列,其中包含每台相机每小时的平均价格,如下所示:
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编辑:“平均值是通过将每台相机唯一的‘日期小时’计数除以观察值来计算的。
例如:相机1有4个独特的“日期小时”,所以第一次观察蜘蛛蛛(2)的平均值是0.5“。
最后,我想把数据绘制成x轴上的顺序和y轴上的平均值(忽略摄像机号)。这是正确的方法吗?我能用它计算一个标准错误吗?
我试过谷歌,但一切似乎有点压倒性,老实说,我找不到我想要的答案。
提前感谢!
发布于 2020-06-12 12:43:47
这是个棘手的问题。这不是最优雅的解决方案,但有效。基-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.00https://stackoverflow.com/questions/62344107
复制相似问题