我有一个包含lon/lat/time/values列的简单csv文件:
df <- data.frame(longitude=rep(c(10.5,11,12),10),
latitude=rep(c(10.5,11,12),10),
date= as.Date(rep(c("2012-01-01", "2012-02-01", "2012-03-01"), 10)),
vals=rnorm(30,10,5))
我想把这个转换成一个SpatRaster使用S4方法的签名'data.frame' rast(x, type="xyz", crs="", digits=6, extent=NULL)
,其中每个“日期”将是一个单独的层。
导入时不带日期也可以正常工作:
df.subset <- select(df,-date)
tmp <- terra::rast(df.subset, type="xyz")
我尝试按日期拆分SpatRaster,但得到Error in .local(x, f, ...) : length(f) == nlyr(x) is not TRUE
错误:
split(tmp, as.factor(df$date))
我可以想到一种循环方法
1.按日期拆分df:split(df, c("2012-01-01", "2012-02-01", "2012-03-01"))
1.为每个日期创建单独的散射栅格
1.使用merge
将单个SpatRasters与命名图层合并
在terra中有没有更整洁的方法来做这件事?
2条答案
按热度按时间fnx2tebb1#
可以使用
apply
函数之一创建栅格列表,然后在此列表中再次使用rast
。06odsfpq2#
以下是使用
split
或reshape
的方法示例数据
再成形
分裂
您也可以在
lapply
循环中"手动"执行拆分