2列之间的操作(度数值)

时间:2017-05-25 12:15:10

标签: r degrees

在R中,我无法找到以度为单位计算Aspect的方法。

我有一个shapefile,其中包含2列方面。第一列ASPECT对应于该点的新方面,第二列Aspect是参考方面。我想只保留ASPECT列中值不超过或小于45°的值。我想为每个值做这个计算。

我的数据如下:

ID   ASPECT   Aspect
0  17.15395 223.9521
1 323.72394 225.1147
2 294.01069 225.7785
3 302.72811 226.4539
4 321.79413 227.1748
5 326.36743 227.9040

我考虑过在ASPECTAspect之间进行区分,以便过滤掉所有不合适的值。问题是因为它在度数上有时会有差异达到359,实际上只有几度。

    gr73999<-readOGR(dsn=wd, layer="73366_CORRPOINTS")
    gr<-as.data.frame(gr73999)
    gr_df<- gr[,c("ID","ASPECT","Aspect")]


    gr_df$degree_diff<- gr_df$Aspect-gr_df$ASPECT

ID    ASPECT   Aspect     Difference_aspect
0  17.15395 223.9521        -206.79816
1 323.72394 225.1147          98.60924
2 294.01069 225.7785          68.23220
3 302.72811 226.4539          76.27422
4 321.79413 227.1748          94.61931
5 326.36743 227.9040          98.46343    

    min(gr_df$degree_diff)
-359.0588
    max(gr_df$degree_diff)
358.2314

我的问题是:如何才能完成所有学位计算?如果Aspect为340且ASPECT为10,是否可以使用-30而不是330?

1 个答案:

答案 0 :(得分:0)

我认为这可以满足您的需求。它总会在-180和+180之间给出答案。

gr_df$degree_diff <- ((gr_df$Aspect-gr_df$ASPECT+180) %% 360) - 180