我有一个数据帧,其位置总线的速度为零(静止)。我想确定这是由于交通状况还是在公交车站停了下来。我有一个计算从公交车站中心到其他任何位置的距离的函数(该函数称为in_circle
)。如果公共汽车在距公共汽车站中心20米的范围内停靠,则将stop_type
设置为1,然后继续到公共汽车停靠的下一个点。
下面的代码正在工作,但是我有大量数据,并且两个for循环需要相当长的时间才能运行。因此,我想知道是否有更有效的方法来编写下面的代码。
编辑: 我添加了一些数据行的图片。 https://i.stack.imgur.com/Ekvqv.png
k=1
for(i in 1:NROW(df_bus_h_z)){
# Save current longitude and latitude of the bus
cur_lat <- df_bus_h_z[i, "latitude"]
cur_lon <- df_bus_h_z[i, "longitude"]
# Controll boolean
stop_found = FALSE
#Search trough all bus stops
for(j in 1:NROW(df_stop_all)){
if(df_stop_all[j,"trip_id"] == cur_trip){
# If the bus stopped at a bus stop
if(in_circle(df_stop_all[j,"stop_lat"],df_stop_all[j,"stop_lon"], cur_lat, cur_lon) <= 20){
df_bus_h_z[i, "stop_type"] <- 1
df_bus_h_z[i, "stop_id"] <- df_stop_all[j,"stop_id"]
stop_found = TRUE
break
}
}
}
if(stop_found == FALSE){
df_bus_h_z$stop_type[i] <- 0
}
}
答案 0 :(得分:0)
请考虑合并两个数据集,这通常是两个数据集之间嵌套resource "null_resource" "example2" {
provisioner "local-exec" {
command= "C:\\Users\\Boopathi Kumar\\Downloads\\poscript1.ps1 -azureAplicationId ${var.appId} -azureTenantId ${var.tenantId} -azureSecret ${var.secret}"
interpreter = ["powershell.exe", "-File"]
}
}
循环的矢量化对应物。然后,运行for
,具体取决于返回的未知方法ifelse
。
请注意,以下内容未经测试,没有reproducible example和预期的结果。如果需要将所有记录都保留在其中一组中,请调整in_circle
中的 all 参数。另外,根据需要调整?merge
或by
/ by.x
参数中的联接字段。
by.y
答案 1 :(得分:0)
我用geo_join函数解决了它。感谢您的帮助!