2017-05-25 94 views
0

在R中我無法找到以度數計算方面的方法。2列之間的操作(度數值)

我有一個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?

+0

你可以把它放在一個循環中,並根據if/then的值執行不同的操作。你也可以使用apply – jwells

回答

0

我認爲這就是你要找的。它總是會在-180和+180之間給出答案。

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