将 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)
会起作用。
我想向包含每次骑行距离的数据集添加一个新列。为了计算这样的距离,我使用 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)
会起作用。