R - 通过划分数据集应用公式
R - Applying formula through partitioning a dataset
我需要使用 Bing 地图 API 来获取密码列表的坐标数据(印度)。我可以使用以下代码对小型数据集执行此操作:
get_lat_long <- function(pincodes) {
# key: https://www.bingmapsportal.com/Application
require(XML); require(data.table)
PinCodeLatLong <- data.frame(pincode = "Temp", lat = "Lat", long = "Long")
for(i in 1:length(pincodes)){
var = pincodes[i]
link=paste0("http://dev.virtualearth.net/REST/v1/Locations?postalCode=",var,"&o=xml&maxResults=1&key=<mykey>")
#data<- xmlParse(link)
xml_data <- xmlToList(xmlParse(link))
PinCodeLatLongtemp <- data.frame(pincode = "Temp", lat = "Lat", long = "Long")
PinCodeLatLongtemp$pincode <- var
PinCodeLatLongtemp$lat <- xml_data$ResourceSets$ResourceSet$Resources$Location$Point$Latitude
PinCodeLatLongtemp$long <- xml_data$ResourceSets$ResourceSet$Resources$Location$Point$Longitude
PinCodeLatLong <- rbindlist(list(PinCodeLatLongtemp,PinCodeLatLong), fill = T)
}
return(PinCodeLatLong)
}
master_lat_long <- get_lat_long(pincode_map$Pincode)
master_lat_long <- dplyr::filter(master_lat_long, !is.na(pincode))
master_lat_long <- master_lat_long[!duplicated(master_lat_long),]
pincode_map <- merge(pincode_map, master_lat_long, by.x="Pincode", by.y="pincode", all.y=FALSE)
但是,Bing Maps Basic API 一次只允许 2500 个数据点,我需要对大型数据集(100,000+)执行此操作。分区并将公式应用于文件 master_lat_long 的最佳方法是什么?有没有办法自动执行此操作?
您可以通过多种方式拆分每 2500 个值的数据。
ceiling
的一种方式是:
result <- by(pincode_map$Pincode,
ceiling(seq_len(nrow(pincode_map))/2500), get_lat_long)
我需要使用 Bing 地图 API 来获取密码列表的坐标数据(印度)。我可以使用以下代码对小型数据集执行此操作:
get_lat_long <- function(pincodes) {
# key: https://www.bingmapsportal.com/Application
require(XML); require(data.table)
PinCodeLatLong <- data.frame(pincode = "Temp", lat = "Lat", long = "Long")
for(i in 1:length(pincodes)){
var = pincodes[i]
link=paste0("http://dev.virtualearth.net/REST/v1/Locations?postalCode=",var,"&o=xml&maxResults=1&key=<mykey>")
#data<- xmlParse(link)
xml_data <- xmlToList(xmlParse(link))
PinCodeLatLongtemp <- data.frame(pincode = "Temp", lat = "Lat", long = "Long")
PinCodeLatLongtemp$pincode <- var
PinCodeLatLongtemp$lat <- xml_data$ResourceSets$ResourceSet$Resources$Location$Point$Latitude
PinCodeLatLongtemp$long <- xml_data$ResourceSets$ResourceSet$Resources$Location$Point$Longitude
PinCodeLatLong <- rbindlist(list(PinCodeLatLongtemp,PinCodeLatLong), fill = T)
}
return(PinCodeLatLong)
}
master_lat_long <- get_lat_long(pincode_map$Pincode)
master_lat_long <- dplyr::filter(master_lat_long, !is.na(pincode))
master_lat_long <- master_lat_long[!duplicated(master_lat_long),]
pincode_map <- merge(pincode_map, master_lat_long, by.x="Pincode", by.y="pincode", all.y=FALSE)
但是,Bing Maps Basic API 一次只允许 2500 个数据点,我需要对大型数据集(100,000+)执行此操作。分区并将公式应用于文件 master_lat_long 的最佳方法是什么?有没有办法自动执行此操作?
您可以通过多种方式拆分每 2500 个值的数据。
ceiling
的一种方式是:
result <- by(pincode_map$Pincode,
ceiling(seq_len(nrow(pincode_map))/2500), get_lat_long)