我的数据框包含以下变量: ID,日期,时间,纬度(以度为单位),经度(以度为单位)和Y(二进制)。
我想计算一行中的点和它之前的一行中的点(point1-point0,point2-point1等)之间的距离。 *每个ID的第一行必须包含0,因为在它之前没有行。 *我定义了一个函数来计算两个点之间的距离。此函数必须获取以下参数:(lat1,lat2,lon1,lon2)。 因此,可以通过在“纬度”和“经度”列上应用此功能来创建“距离”变量。
此外,我想创建累积距离变量,该变量显示基于“距离”变量的累积距离。当“ Y”变量的值等于1时,将为每个ID重置“累计距离”变量。
此外,我想为每个ID创建一个变量,以显示自“ Y”变量获得值1以来已经过了多少天。并将其重置为“累积距离”变量。
数据说明:
ID date time latitude longitude Y
1 08/27/2019 18:00 Lat1 Lon1 0
19:00 Lat2 Lon2 0
20:00 .. .. 1
21:00 .. .. 0
08/28/2019 18:00 .. .. 0
2 07/08/2019 19:00 .. .. 0
08:00 .. .. 1
09:00 .. .. 0
10:00 .. .. 0
预期结果:
ID date time latitude longitude distance cum_distance Days Y
1 08/27/2019 18:00 Lat0 Lon0 0 0 0 0
19:00 Lat2 Lon1 30 30 0 0
20:00 .. .. 20 50 0 1
21:00 .. .. 40 40 0 0
08/28/2019 18:00 .. .. 20 60 0 0
2 07/08/2019 19:00 .. .. 0 0 0 0
08:00 .. .. 20 20 0 1
09:00 .. .. 30 50 0 0
10:00 .. .. 10 60 0 0