如何按日期拆分数据框并组装一组新的数据框?

时间:2014-01-16 10:49:30

标签: r list loops dataframe coordinates

我将以下格式的数据作为数据框:

* Date    Lat    Long      ID
* May 4    30      31      1 
* May 4    30      31      2
* May 4    30      31      3
* May 5    30      31      4
* May 5    31      31      5
* May 5    31      31      6
* May 6    31      31      7
* May 6    33      31      8 
* May 6    31      31      9

我希望能够按日期提取数据框并应用'fossil'包中的以下功能

create.lats(x, loc="locality", long="longitude", lat="latitude")

我使用split来按日期分解数据,但这会将所有内容转换为列表

split(mydata, with(mydata, (date)), drop = TRUE)

然后我需要将每个单独的列表转换回带有原始标题的数据框。

我想我需要一个循环才能做到这一点?不幸的是,我被困在哪里,所以任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

这是按因子应用于数据帧的create.labs函数,并返回到由原始数据框和新输出组成的数据框中:

rm(list=ls())
require(fossil)
df = data.frame("Date"=sample(LETTERS[1:4],100,replace=TRUE), 
                "Lat"= sample(30:35,100,replace=TRUE),
                "Long"= sample(30:35,100,replace=TRUE),
                "ID" = sample(1:5,100,replace=TRUE) )
endresult = do.call("rbind",by(df, df$Date, 
                              function(x) 
                              { data.frame(cbind(x,create.lats(x,loc="Date", long="Long", lat="Lat")),stringsAsFactors=F) } ))
rownames(endresult)=NULL

您也可以在plyr包中使用ddply执行此操作。我建议您在原始问题中使用dput,以便人们更轻松地查看您的数据。