有没有一种方法可以使用 ggmap mapdist 在 R 中同时 运行 多个数据点?
Is there a way I can run multiple two and from data points at once in R using ggmap mapdist?
我目前有一个数据集,其中包含纬度和经度格式的数据。
例如列中的数据看起来像“46.40267091+-117.04417”。第二列中的数据看起来相同。
使用 ggmap 我可以单独 运行 我尝试计算距离的每个位置的代码。
mapdist("46.3957 +-117.0622","46.40267091+-117.04417",mode = "driving")
from to m km miles seconds minutes hours mode
<chr> <chr> <int> <dbl> <dbl> <int> <dbl> <dbl> <chr>
1 46.3957 +-117.0622 46.40267091+-117.04417 2183 2.18 1.36 217 3.62 0.0603 driving
我很难一次性 运行 处理所有数据,因为我必须处理 736 行数据。有没有一种快速的方法可以做到这一点,而不是一个一个地做,这很容易出错?
感谢您的帮助
正如所承诺的,这是使用 R 实现您想要的目标的一种方法。我在 Jupyter Lab 中做到了这一点,但这不会改变任何东西。这是代码:
获取To/From数据:
df_t <- read.csv("C:/python/R_files/Whosebug/To.csv")
df_f <- read.csv("C:/python/R_files/Whosebug/From.csv")
head(df_t, 2)
head(df_f, 2)
输出:(看起来不错)
A data.frame: 2 × 1
To
<fct>
1 "46.40267091 - 117.04417"
2 "46.40267091 - 117.04417"
A data.frame: 2 × 1
From
<fct>
1 "46.406333- 117.049925"
2 "46.395726- 117.062265"
接下来,我将两个数据帧合并为一个数据帧。您的数据可能已经像这样合并了。
df <- data.frame(from = c(df_f), to = c(df_t))
df
输出:(看起来不错)
A data.frame: 6 × 2
From To
<fct> <fct>
"46.406333- 117.049925" "46.40267091 - 117.04417"
"46.395726- 117.062265" "46.40267091 - 117.04417"
"46.306254- 119.27897" "46.2342797 - 119.2329393"
"46.275479- 119.301406" "46.2342797 - 119.2329393"
"46.281562- 119.293819" "46.2342797 - 119.2329393"
"46.288286- 119.284903" "46.2342797 - 119.2329393"
最后,创建一个函数并对 to/from 进行子集化。获取数据:
dist <- apply(df, 1, function(x){
mapdist( x["From"], x["To"] )
})
dist # run the function
你会想要绘制这些点。我从来没有绘制数据来查看数据或结果是否有意义。
输出-点击link:(Just right!)
我目前有一个数据集,其中包含纬度和经度格式的数据。 例如列中的数据看起来像“46.40267091+-117.04417”。第二列中的数据看起来相同。
使用 ggmap 我可以单独 运行 我尝试计算距离的每个位置的代码。
mapdist("46.3957 +-117.0622","46.40267091+-117.04417",mode = "driving")
from to m km miles seconds minutes hours mode
<chr> <chr> <int> <dbl> <dbl> <int> <dbl> <dbl> <chr>
1 46.3957 +-117.0622 46.40267091+-117.04417 2183 2.18 1.36 217 3.62 0.0603 driving
我很难一次性 运行 处理所有数据,因为我必须处理 736 行数据。有没有一种快速的方法可以做到这一点,而不是一个一个地做,这很容易出错?
感谢您的帮助
正如所承诺的,这是使用 R 实现您想要的目标的一种方法。我在 Jupyter Lab 中做到了这一点,但这不会改变任何东西。这是代码:
获取To/From数据:
df_t <- read.csv("C:/python/R_files/Whosebug/To.csv")
df_f <- read.csv("C:/python/R_files/Whosebug/From.csv")
head(df_t, 2)
head(df_f, 2)
输出:(看起来不错)
A data.frame: 2 × 1
To
<fct>
1 "46.40267091 - 117.04417"
2 "46.40267091 - 117.04417"
A data.frame: 2 × 1
From
<fct>
1 "46.406333- 117.049925"
2 "46.395726- 117.062265"
接下来,我将两个数据帧合并为一个数据帧。您的数据可能已经像这样合并了。
df <- data.frame(from = c(df_f), to = c(df_t))
df
输出:(看起来不错)
A data.frame: 6 × 2
From To
<fct> <fct>
"46.406333- 117.049925" "46.40267091 - 117.04417"
"46.395726- 117.062265" "46.40267091 - 117.04417"
"46.306254- 119.27897" "46.2342797 - 119.2329393"
"46.275479- 119.301406" "46.2342797 - 119.2329393"
"46.281562- 119.293819" "46.2342797 - 119.2329393"
"46.288286- 119.284903" "46.2342797 - 119.2329393"
最后,创建一个函数并对 to/from 进行子集化。获取数据:
dist <- apply(df, 1, function(x){
mapdist( x["From"], x["To"] )
})
dist # run the function
你会想要绘制这些点。我从来没有绘制数据来查看数据或结果是否有意义。
输出-点击link:(Just right!)