看起来我应该知道如何做到这一点,或者至少在这里或其他地方找到答案。不幸的是,两者都没用。
我有一个客户数据框,其中一列是他们的ID,另一列是他们的完整地址。我想为每行添加3列,这些列来自地理编码查找的纬度、经度和县代码。
该数据框如下:
customer_id fulladdress
1 123 Main St., Anywhere, FL
2 321 Oak St., Thisplace, CA
我创建了一个地理编码函数,它接收完整地址并返回带有纬度、经度和县/区列的数据框。
如何将我的地理编码函数应用于数据框中的每一行,并将结果作为3列附加到现有数据框中,使其看起来像这样:
customer_id fulladdress lat long county
1 123 Main St., Anywhere, FL 33.2345 -92.3333 43754
2 321 Oak St., Thisplace, CA 25.3333 -120.333 32960
我试过使用apply和ddply,但似乎无法理解它们的作用。我用ddply尝试过,但它只是给我原始数据框而已。
ddply(customers[1:3,], .(fulladdress), function(x) { geocode(x$fulladdress)})
感谢您的帮助。
cbind(customers, sapply(geocode(customers$fulladdress)))
的意思是将customers
数据框与geocode(customers$fulladdress)
的结果按列合并。其中,geocode()
是一个函数,可以根据输入的地址信息获取地理编码信息(例如经度和纬度)。sapply()
函数则可以对一个列表或向量中的每个元素应用指定的函数,并返回一个结果向量。 - Jamesdata.frame(customers, "geocode"=sapply(geocode(customers$fulladdress)))
。 - Brandon Bertelsen