【发布时间】:2017-06-07 08:35:18
【问题描述】:
我有一个数据框,其中有一只企鹅在福克兰群岛进行了 46 次旅行,我计算了几个参数,假设每次觅食旅行都是在企鹅距离海岸超过 1000 米时,当回到 penguin 1 data in .xlsx.Rda al dataframe stored:
library(sp)
>p.1
date | lon | lat | trip | distancetocoast
2014-06-11 19:02:00 | -58,3508585 | -51,88438373 | 1 | 2236.067977
2014-06-12 01:02:00 | -58,35589725 | -51,88349529 | 1 | 1000
2014-06-12 13:02:00 | -58,27224941 | -51,91903677 | 1 | 7211,102551
2014-06-12 19:02:00 | -58,27974654 | -51,90535003 | 1 | 5830,951895
2014-06-13 01:02:00 | -58,32331901 | -51,89410464 | 1 | 3605,551275
2014-06-13 07:02:00 | -58,35833139 | -51,88809227 | 1 | 1414,213562
2014-06-13 13:02:00 | -58,35617673 | -51,88156281 | 1 | 1000
2014-06-13 19:02:00 | -58,34055711 | -51,89002367 | 1 | 2236,067977
2014-06-14 01:02:00 | -58,34982536 | -51,8715761 | 2 | 1000
2014-06-14 13:02:00 | -58,3073814 | -51,92722937 | 2 | 7071,067812
2014-06-14 19:02:00 | -58,34581314 | -51,86761133 | 3 | 1000
2014-06-15 01:02:00 | -58,34050624 | -51,88382088 | 3 | 1414,213562
2014-06-15 13:02:00 | -58,2974691 | -51,91795326 | 3 | 6324,55532
2014-06-15 19:02:00 | -58,19881901 | -51,95172233 | 3 | 13000
2014-06-16 01:02:00 | -58,1348416 | -51,98673766 | 3 | 18788,29423
2014-06-16 07:02:00 | -57,99399544 | -52,06988191 | 3 | 28861,73938
2014-06-16 13:02:00 | -58,00469754 | -52,02795069 | 3 | 26627,05391
2014-06-16 19:02:00 | -57,92758675 | -52,02184666 | 3 | 29000
2014-06-17 01:02:00 | -57,91658235 | -51,99748699 | 3 | 28284,27125
2014-06-17 07:02:00 | -57,77015528 | -51,99031797 | 3 | 30805,8436
2014-06-17 13:02:00 | -57,99601712 | -51,91519551 | 3 | 17804,49381
2014-06-17 19:02:00 | -58,06820013 | -51,92972737 | 3 | 14866,06875
2014-06-18 01:02:00 | -58,19845185 | -51,89522513 | 3 | 7615,773106
2014-06-18 07:02:00 | -58,35241361 | -51,88015998 | 3 | 1000
2014-06-18 13:02:00 | -58,35603546 | -51,88336878 | 3 | 1000
2014-06-18 19:02:00 | -58,33350332 | -51,87308427 | 3 | 1000
2014-06-19 01:02:00 | -58,33839581 | -51,87846631 | 3 | 1414,213562
2014-06-19 07:02:00 | -58,42661519 | -51,80902388 | 4 | 0
2014-06-19 13:02:00 | -58,30461883 | -51,93745837 | 4 | 7810,249676
2014-06-19 19:02:00 | -58,18362875 | -51,96475914 | 4 | 14317,82106
我使用了这段代码来计算矩阵中每个点的距离:
distancebetwenpoints=spDists(locs1_utm, longlat=FALSE)
p.1$dist=distancebetwenpoints #INCLUDE COLUMN DISTANCE TO THE COLONY OF EACH POINT
但是,这在数据框 p.1 中包含一个 779 值的巨大矩阵,我尝试了其他方法,但无法使其工作,并且使用该矩阵我无法真正正确地研究统计数据,因此,我该如何计算企鹅每次旅行的距离是多少?
FalklandCRS = CRS("+proj=utm +zone=21 +south +datum=WGS84 +units=m +no_defs")
locs1 = sp::SpatialPointsDataFrame(coords = cbind(subset(p.1$lon, p.1$id == 1), subset(p.1$lat, p.1$id == 1)), data = subset(p.1, p.1$id == 1), proj4string=CRS("+proj=longlat +datum=WGS84"))
locs1_utm = sp::spTransform(locs1, FalklandCRS)
head(p.1)
id date lon lat lon.025 lon.5 lon.975 lat.025 lat.5 lat.975
1 1 2014-06-11 19:02:00 -58.35086 -51.88438 -58.35466 -58.35112 -58.34588 -51.88563 -51.88442 -51.88295
2 1 2014-06-12 01:02:00 -58.35590 -51.88350 -58.36226 -58.35594 -58.34932 -51.88602 -51.88350 -51.88068
4 1 2014-06-12 13:02:00 -58.27225 -51.91904 -58.32643 -58.26749 -58.24544 -51.93304 -51.91970 -51.90113
5 1 2014-06-12 19:02:00 -58.27975 -51.90535 -58.51877 -58.27893 -58.02546 -52.05056 -51.90636 -51.75887
6 1 2014-06-13 01:02:00 -58.32332 -51.89410 -58.56753 -58.32094 -58.09604 -52.04776 -51.89361 -51.74586
7 1 2014-06-13 07:02:00 -58.35833 -51.88809 -58.37411 -58.35856 -58.34158 -51.89519 -51.88818 -51.88029
bathy bathy2 distancetocoast
1 -1 4.080409 2236.068
2 -1 4.080409 1000.000
4 -6 -5.849781 7211.103
5 -4 -5.308407 5830.952
6 -1 -2.060174 3605.551
7 -1 -1.450360 1414.214
【问题讨论】:
-
您能否编辑您的问题以包含
dput(p.1)的输出?这样我们就可以为您提供帮助,而无需手动重新创建您的数据框。 -
我不想要矩阵,这是我试图用
dput(p.1)粘贴表格的问题,但它运行着巨大的表格,而且我的字符数有限我在上面 -
我现在没有时间完全概括这一点(因此正确回答您的问题)。你能检查一下这是否表明有任何承诺吗? gist.github.com/romunov/93e42a05c2d5112b8e7fa8bd12ebb670
-
spDists 来自包“sp”我很抱歉我正在尝试剪切表格并使其上传更清晰,我是堆栈溢出的新手,过去几天我一直在尝试粘贴正确的data.frames,但由于某种原因我不能,因为“dput()”给出了大量的行,甚至看起来最糟糕。
-
这里是部分 excel 文件的链接:[drive.google.com/drive/folders/…
标签: r location distance latitude-longitude distribution