我有以下格式的数据作为数据框:
* 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
您也可以ddply
在plyr软件包中执行此操作。我建议dput
您在原始问题中使用,以使人们更轻松地查看您的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句