r-如何将数据帧(而非光栅文件)的分辨率从0.25更改为0.5



我的数据框架基于0.25度数据集,由纬度、经度和相关温度组成。现在我想把分辨率从0.25改为0.5。例如,我的数据帧的纬度和经度分别为70.5、70.25、70、69.75、69.5…,而现在我只需要整数和小数部分0.5的坐标,如70.5、70、695、69…我该如何轻松做到这一点?

我们可以从plyr:使用round_any

library(plyr)
unrounded <- c(runif(10)*10)
> unrounded
[1] 9.796907 4.237637 4.758592 1.109172 5.037765 3.077775 7.616236 3.872094
[9] 3.471238 8.831574
rounded <- round_any(unrounded, 0.5)
> rounded
[1] 10.0  4.0  5.0  1.0  5.0  3.0  7.5  4.0  3.5  9.0

作为data.frame,您必须将其包装回data.frame:

unrounded2 <- data.frame(x = c(runif(10)*10))
> unrounded2
x
1  6.1078737
2  1.8496701
3  3.5469245
4  9.7893189
5  0.5503520
6  8.4338650
7  2.5316328
8  0.1954177
9  4.0447613
10 7.9741839
rounded2 <- data.frame(x= round_any(unrounded2$x, 0.5))
> rounded2
x
1   6.0
2   2.0
3   3.5
4  10.0
5   0.5
6   8.5
7   2.5
8   0.0
9   4.0
10  8.0

您可以先乘后除,四舍五入到0.5。

set.seed(1)
x <- c(runif(10)*10)
x
# [1] 2.6550866 3.7212390 5.7285336 9.0820779 2.0168193 8.9838968 9.4467527 6.6079779 6.2911404 0.6178627
round(x * 2)/2
# [1] 2.5 3.5 5.5 9.0 2.0 9.0 9.5 6.5 6.5 0.5

作为数据帧的一部分

d <- data.frame(lon=x)
d$lon <- round(d$lon * 2) / 2

相关内容

  • 没有找到相关文章

最新更新