如何按指定规则对经纬度取整?自定义取整需求技术求助
解决方案
核心逻辑
要实现经度以0.04结尾、纬度以0.03结尾的0.1间隔取整,核心思路是先将目标偏移量从原始值中扣除,把问题转化为常规的0.1间隔取整,再把偏移量加回即可。结合你给出的纬度示例(53.15需处理为53.13),这里采用向下取整的方式匹配需求。
代码实现(使用dplyr)
library(dplyr) # 假设你的数据框名为df df <- df %>% mutate( # 处理经度:向下取整到以0.04结尾的0.1间隔数值 Long = floor((Long - 0.04) / 0.1) * 0.1 + 0.04, # 处理纬度:向下取整到以0.03结尾的0.1间隔数值 Lat = floor((Lat - 0.03) / 0.1) * 0.1 + 0.03 )
逻辑验证
以你提到的纬度53.15为例:
- 53.15 - 0.03 = 53.12
- 53.12 / 0.1 = 531.2,向下取整得到531
- 531 * 0.1 = 53.1,加回0.03后得到53.13,完全符合需求。
可选:四舍五入到最近目标值
如果需要取最近的目标值而非强制向下取整,只需将floor替换为round:
df <- df %>% mutate( Long = round((Long - 0.04) / 0.1) * 0.1 + 0.04, Lat = round((Lat - 0.03) / 0.1) * 0.1 + 0.03 )
内容的提问来源于stack exchange,提问作者B209978
相关产品推荐
相关产品推荐

