我有一个数据框,其中包含大量来自动物运动数据的GPS点。我计算了连续点之间的距离,并将其存储为单独的列。所以我的数据看起来像这样:
< Dist
TagID Date Time location.long location.lat Distance
FW 15.10.2018 02:12:14.000 26.8666632 41.6550714 0
FW 15.10.2018 02:15:22.000 26.8666077 41.655001 3.7
FW 15.10.2018 02:31:12.000 26.8666417 41.6551456 4.5
FW 15.10.2018 02:50:47.000 26.8665424 41.6549653 2.4
FW 15.10.2018 03:00:45.000 26.8665161 41.6549384 9.8
FW 15.10.2018 03:05:35.000 26.8665179 41.6549765 8.8
FW 16.10.2018 08:00:20.000 26.8664499 41.6549864 0
FW 16.10.2018 08:05:07.000 26.8664861 41.6550659 1.1
FW 16.10.2018 08:10:08.000 26.8665225 41.655125 7.5
FW 16.10.2018 08:15:06.000 26.866505 41.6550936 7.5
FW 16.10.2018 08:20:06.000 26.8664646 41.6550879 3.2
FW 16.10.2018 08:25:07.000 26.8635185 41.6515747 6.6
FW 16.10.2018 08:40:28.000 26.8664751 41.6550872 2.3
FW 17.10.2018 10:10:06.000 26.8735928 41.5852645 0
FW 17.10.2018 10:15:06.000 26.8455718 41.5654656 3.2
FW 17.10.2018 10:20:06.000 26.7989363 41.543988 4.5
FW 17.10.2018 10:25:06.000 26.7581078 41.5424566 3.4
FW 17.10.2018 10:30:06.000 26.7282547 41.560534 3.1
FW 17.10.2018 10:35:06.000 26.7184667 41.5541104 1.0
FW 17.10.2018 10:40:06.000 26.6363721 41.549993 6.8
FW 17.10.2018 10:45:06.000 26.6293603 41.5496727 0.5
FW 17.10.2018 10:50:06.000 26.6293732 41.5496753 11.2
FW 17.10.2018 10:55:06.000 26.6293623 41.5496688 7.8
FW 17.10.2018 11:00:06.000 26.6292996 41.549678 9.4
FW 17.10.2018 11:05:07.000 26.6293224 41.5496449 1.2
FW 18.10.2018 08:40:06.000 26.6294363 41.5496057 0
FW 18.10.2018 08:45:06.000 26.6294137 41.5496145 16.3
FW 18.10.2018 08:50:06.000 26.6294167 41.5496079 12.4
FW 18.10.2018 08:55:06.000 26.6294302 41.549607 22.0
FW 18.10.2018 09:00:06.000 26.6294248 41.5496141 4.3
FW 18.10.2018 09:05:06.000 26.6294258 41.549612 2.1
FW 18.10.2018 09:10:06.000 26.6294335 41.5496148 0.6
FW 18.10.2018 09:15:06.000 26.6294349 41.5496131 1.6
FW 18.10.2018 09:20:06.000 26.6294279 41.5496086 11.6
FW 18.10.2018 09:25:06.000 26.6294394 41.5496087 2.3
FW 18.10.2018 09:30:07.000 26.6294366 41.5496005 1.8
FW 18.10.2018 09:35:06.000 26.6294161 41.5496169 7.5
FW 18.10.2018 09:40:06.000 26.6294205 41.5496155 12.6
FW 18.10.2018 09:45:07.000 26.6294313 41.5496143 5.9
在另一个数据框(“行”)中,我具有以下信息:
< Rows
Date Row_number
15.10.2018 4
16.10.2018 5
17.10.2018 9
18.10.2018 12
“行号”(Row_number)中的值显示了第一个数据帧中的行号,这对我来说特别有意义。 因此,我需要使用第二个数据框(“行”)作为信息源。基于“距离”的值,我需要针对每个特定日期计算从第一行到“行”数据框中指示的行号的“距离”列中的值之和。例如对于15.10.2018,我需要将距离累加到第四行-0 + 3.7 + 4.5 + 2.4 = 10.6。对于2018年10月17日,从第一行到第9行的总和,依此类推。
所以我想我应该先按日期分割数据,以便创建单独的单位,然后以某种方式使用sapply?
sp <- split(Dist, Dist$Date)
sapply(sp, function(sp){.....
答案 0 :(得分:0)
我们可以加入两个数据集,然后按'日期'分组,获得'距离'的sum
,并根据'行号'的值进行分组
library(tidyverse)
left_join(Dist, Rows) %>%
group_by(Date) %>%
mutate(DistanceSum = sum(Distance[seq_len(Row_number[1])], na.rm = TRUE))