Примените функцию к каждой строке в data.frame и добавьте результат к data.frame в R - PullRequest
8 голосов
/ 14 ноября 2011

Кажется, я должен либо знать, как это сделать, либо хотя бы найти ответ здесь или в другом месте.К сожалению, ни один из них не работает.

У меня есть фрейм данных о клиентах, где один столбец является их идентификатором, а другой столбец - их полным адресом.Я хочу добавить 3 столбца для каждой строки с кодом lat, long и county из поиска геокодов.

Этот фрейм данных выглядит как

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)})

Спасибо за помощь.

1 Ответ

4 голосов
/ 15 ноября 2011

Спасибо, что поставили меня на правильный путь. Вот что наконец сработало:

cbind(customers, t(sapply(customers$fulladdress,geocode, USE.NAMES=F))) 
...