使用ddply在具有多个输入的数据帧中应用函数

时间:2015-12-17 21:42:41

标签: r

说我有:

df = data.frame(loc=c("The White House", "Lancaster, PA", "Durham, NC"),
     id=c(111,222,333))

我想将该位置传递给地理编码例程(我已经工作)以及ID号,因此我可以将id附加到新数据。

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

如何使用ddply将此函数应用于数据帧并将结果作为数据帧返回?我尝试过类似的东西:

ddply(df,1,afun,id=id)

想法?

2 个答案:

答案 0 :(得分:1)

我有点困惑,为什么你在这里使用ddply。如果我正确理解的话,我看到的一个解决方案是使用dplyr和mutate,如下所示:

library(dplyr)
df %>% mutate(g=x+1,h=y+3) %>%
select(g,h)

我觉得您必须尝试使用​​具有分组变量的更大数据集来执行某些操作才能要求ddply。使用mutate和dplyr,这也很容易实现。

HTH。

答案 1 :(得分:1)

答案很简单,使用mdply:

mdply(select(df,x=loc,y=id),afun)

这需要data.frame并吐出data.frame。