如何解决如何根据R中的纬度,经度,时间操作数据帧?
我是 R 新手,具有使用光栅和 netCDF 文件的背景,我尝试寻找这个问题的答案,但找不到任何东西。
有这个具有时间和空间变量的数据框。时间由 Year
表示,空间位置既可以与 ADM2_PCODE
相关,也可以与 geometry
列中的经纬度对构建的多边形相关。我想找到一种方法来选择具有至少 5 年数据 (Valor != NA
) 的每个位置。我想这可以通过 ADM2_PCODE
或 geometry
编入索引。
在正常的 netcdf 操作中,我会使用类似 where(sum(Valor != NA).dim('Year')>= 5)
的东西。但是,这里的情况需要使用表格或向量解决方案,而我没有操作向量的经验。我知道可以将表格转换为特定分辨率的栅格,但我认为最好通过将操作保持在表格格式或向量中来最小化错误和残差。我想知道是否有人可以帮助我。
数据框/表格外观的小例子:
Simple feature collection with 6 features and 3 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -62.8941 ymin: -13.1178 xmax: -61.88647 ymax: -11.82782
CRS: NA
Year ADM2_PCODE Valor geometry
1 1981 1100015 NA MULTIPOLYGON (((-62.0495 -1...
2 1982 1100015 NA MULTIPOLYGON (((-62.0495 -1...
3 1983 1100015 NA MULTIPOLYGON (((-62.0495 -1...
4 1984 1100015 NA MULTIPOLYGON (((-62.0495 -1...
5 1985 1100015 NA MULTIPOLYGON (((-62.0495 -1...
6 1986 1100015 NA MULTIPOLYGON (((-62.0495 -1...
解决方法
您是否正在寻找这样的解决方案。我添加了更多数据:
library(dplyr)
df %>%
group_by(ADM2_PCODE) %>%
count(duration_year = max(Year)-min(Year) & !is.na(Valor))
数据框:
df <- structure(list(Year = c(1981,1982,1983,1984,1985,1986,1981,1986),ADM2_PCODE = c(1100015,1100015,1100016,1100016),Valor = c(NA,NA,10,10),geometry = c("MULTIPOLYGON (((-62.0495 -1...","MULTIPOLYGON (((-62.0495 -1...","MULTIPOLYGON (((-63.0495 -1...","MULTIPOLYGON (((-63.0495 -1...")),row.names = c(NA,-12L),class = c("tbl_df","tbl","data.frame"))
输出:
ADM2_PCODE duration_year n
<dbl> <lgl> <int>
1 1100015 FALSE 6
2 1100016 TRUE 6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。