R 如何按日期拆分数据帧并组装一组新的数据帧?
我有以下格式的数据作为数据框:R 如何按日期拆分数据帧并组装一组新的数据帧?,r,list,loops,dataframe,coordinates,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
* 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
我希望能够按日期提取数据帧,并从“化石”包中应用以下函数
create.lats(x, loc="locality", long="longitude", lat="latitude")
我使用split按日期分解数据,但这会将所有内容转换为列表
split(mydata, with(mydata, (date)), drop = TRUE)
然后,我需要将每个单独的列表转换回具有原始标题的数据帧
我想我需要一个循环来做这个?不幸的是,我被困在这里,因此非常感谢任何帮助这里是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
,以便于人们查看您的数据 你好,汉斯·罗格曼,谢谢你的回复。我尝试了你的代码,但我得到了错误:无法将类“函数”强制为数据。框架你一定错过了一个(
或其他什么,我刚刚做了一个复制粘贴,它成功了。尝试复制粘贴代码。如果它对你的数据不起作用,请给我们输出dput(示例数据)
,以查看你的数据。