Powiedz, że mam:
df = data.frame(loc=c("The White House", "Lancaster, PA", "Durham, NC"),
id=c(111,222,333))
Chcę przekazać lokalizację do procedury geokodowania (którą pracuję) wraz z numerem identyfikacyjnym, aby można było dołączyć identyfikator do nowych danych.
afun=function(x,y){
#run geocoder - not shown cause it needs a key
#pretend in this function I get data from the geocoder
OP=data.frame(id=y,lat=34.4,long=-86, county="Washington")
return(OP)
}
jak używać polecenia ddply w celu zastosowania tej funkcji do ramki danych i zwrócenia wyniku jako ramki danych? Próbowałem coś takiego:
ddply(df,1,afun,id=id)
Pomysły?
Odpowiedzi:
1 dla odpowiedzi № 1Jestem trochę zdezorientowany dokładnie, dlaczego używasz tutaj ddply.Jednym rozwiązaniem, które widzę, jeśli rozumiem poprawnie jest użycie dplyr i mutować jak:
library(dplyr)
df %>% mutate(g=x+1,h=y+3) %>%
select(g,h)
Czuję, że musisz próbować coś zrobić z większym zbiorem danych, który ma zmienną grupującą wymagającą ddply. Nadal byłoby to również łatwe do osiągnięcia dzięki mutacji i dplyr.
HTH.
1 dla odpowiedzi nr 2
Odpowiedź jest bardzo prosta, użyj mdply:
mdply(select(df,x=loc,y=id),afun)
To pobiera dane.frame i wypluwa dane.frame.