将 Haversine 结果作为 double 类型添加到数据集

Adding Haversine results to dataset as a double type

我想向包含每次骑行距离的数据集添加一个新列。为了计算这样的距离,我使用 haversine 公式使用给定的每次旅行的开始和结束坐标。

我成功地计算了距离,但很难以我可以读取的方式将该列添加到数据中。

在不添加列的情况下,我得到一个双精度类型(如我所愿)的临时列 (ride_distance),显示如下所示的值:

filtered_dataset %>% rowwise() %>% 
   mutate(ride_distance=distHaversine(c(start_lon, start_lat), c(end_lon, end_lat)))

尝试将该列添加到数据时我得到的结果是我添加的:

filtered_dataset$ride_distance <- filtered_dataset %>%
   rowwise() %>% 
   mutate(distHaversine(c(start_lon, start_lat), c(end_lon, end_lat)))

使用 head() 读取该列的值时我得到了这个,它们甚至不显示为相同的值...:

如何将我的距离值作为双精度值添加到数据中,以便我可以继续使用它进行计算?

您将数据框(小标题)与小标题列混淆了。

此代码:

filtered_dataset %>%
   rowwise() %>% 
   mutate(ride_distance = distHaversine(c(start_lon, start_lat), c(end_lon, end_lat)))

产生你想要的输出;如果你 re-assign 到 filtered_dataset(即 filtered_dataset <- filtered_dataset %>% ...)你会得到你想要的。您还可以使用 magrittr 包中的 %<>% 运算符,它同时进行分配和管道传输:filtered_dataset %<>% rowwise() %>% ...

或者

filtered_dataset$ride_distance <- filtered_dataset %>%
   rowwise() %>% 
   mutate(x = distHaversine(c(start_lon, start_lat), c(end_lon, end_lat))) %>%
   pull(x)

会起作用。