[英]R: Selection for x,y coordinates with conditions
我很難解決有關數據幀中值選擇的問題。 事情是這樣的:-我有一個包含以下變量的數據框:x坐標,y坐標,直徑,G值,H值,質量值,生態價值。 每行對應一個人(本練習中為樹)
現在,這是我嘗試的方法:
> kk<- function(x, y)
+ {
+ coordx<-data$x.Koordinate[data$Q==24] #I have looked before for the best quality value of the sample, which is 24
+ coordy<-data$y.Koordinate[data$Q==24]
+ x <- ifelse(data$x.Koordinate>coordx-11 & data$Q>15,data$x.Koordinate,0) #I choose that I did'nt wanted to have less than 15 of quality value
+ y<-ifelse(data$y.Koordinate>coordy-11 & data$Q>15,data$y.Koordinate,0)#-11 meters from the reference coordinates, the next tree selected has to be inbetween
+ return(c(x,y))
+ }
> kk(data$x.Koordinate, data$y.Koordinate)
[1] 0 0 0 0 0 205550 205550 0 205600 205600 0 0 0 0 0 0 0
[18] 604100 0 604150 604100 0
這里的問題是我們不能清楚地看到x坐標和y坐標之間的差異。
我嘗試了這個:
> kk<- function(x, y)
+ {
+ coordx<-data$x.Koordinate[data$Q==24]
+ coordy<-data$y.Koordinate[data$Q==24]
+ x <- ifelse(data$x.Koordinate>coordx-11 & data$Q>15,data$x.Koordinate," ")
+ y<-ifelse(data$y.Koordinate>coordy-11 & data$Q>15,data$y.Koordinate," ")
+ return(list(x,y))
+ }
> kk(data$x.Koordinate, data$y.Koordinate)
[[1]]
[1] " " " " " " " " " " "205550" "205550" " " "205600" "205600" " "
[[2]]
[1] " " " " " " " " " " " " "604100" " " "604150" "604100" " "
>
我們可以更好地看到與x和y坐標相關的兩個級別。
第一個問題很簡單:此函數是否可能以x,y或xy的形式返回值? (沒有任何0或«»或空格)還是我應該使用另一個R函數來獲得此結果?
第二個問題很復雜:我如何對R說從他在第一次嘗試中發現的坐標以及對整個數據重復此功能?
如果沒有您的數據集或它的一個小例子,對我來說很難嘗試一下,但是我認為以下內容應該可以解決您的第一個問題。
首次使用該函數時,輸入函數中具有x和y的質量為24的樹的x和y坐標
> kk<- function(x, y)
+ {
+ coordx<-x
+ coordy<-y
+ x1 <- ifelse(data$x.Koordinate>coordx-11 & data$Q>15,data$x.Koordinate,NA)
+ y1 <- ifelse(data$y.Koordinate>coordy-11 & data$Q>15,data$y.Koordinate,NA)
+ return(matrix(c(x1,y1),nrow=length(x1), ncol=2, dimnames=list(NULL, c("x","y"))))
+ }
這將為您提供一個矩陣,該矩陣具有與x和y坐標對應的兩列以及一個不滿足條件的NA。
第二個問題更加困難,因為正如您的輸出已經顯示的那樣,有許多樹都符合您設置的條件。 如果要再次檢查所有這些內容,則可以循環使用函數的輸出。 像這樣:
Tree1_friends<-kk(data$x.Koordinate[data$Q==24], data$y.Koordinate[data$Q==24])
for (i in 1:length(Tree1_friends[,1]))
print(kk(Tree1_friends[i,1],Tree1_friends[i,2]))
請注意,此代碼僅打印結果,但是通過一些巧妙的分配策略,您也可以保存它們
非常感謝您的回答。 它對我有很大幫助! 我的問題的第一部分得到了解決,第二部分似乎在某個地方有錯誤……而且我不清楚該函數告訴R在哪里每走10米(實際上,據我說,每50米)數據,請參見下文)...但是無論如何,謝謝您,這是一個很好的起點,我將繼續研究這個問題:) PS:我知道沒有數據是很困難的。 不幸的是,我無法在網上展示它們。 但是,我可以向您展示其中的一部分:
ID Bezeichnung x.Koordinate y.Koordinate Q N hdom V Mittelstamm Fi Ta Foe Lae ueN Bu Es Ei Ah ueL Struktur
1 10,809 62 205450 603950 8 1067 21 64 10 NA NA NA NA NA 100 NA NA NA NA NA
2 10,810 63 205450 604000 16 1333 22 128 12 NA NA NA NA NA 75 NA NA 25 NA NA
3 10,811 56 205500 604050 20 800 22 160 18 NA NA NA NA NA 60 NA NA NA 40 NA
4 10,812 55 205500 604000 12 1033 20 97 12 33 NA NA NA NA 67 NA NA NA NA NA
5 10,813 54 205500 603950 20 500 56 0 23 NA NA NA NA NA 100 NA NA NA NA NA
6 10,814 46 205550 604050 16 567 32 215 19 75 NA NA NA NA 25 NA NA NA NA NA
7 10,815 47 205550 604100 16 233 26 174 30 NA 25 NA NA NA 50 NA NA NA 25 NA
8 10,816 48 205550 604150 0 1167 16 0 0 NA NA NA NA NA NA NA NA NA NA NA
9 10,817 43 205600 604150 24 633 33 366 22 83 17 NA NA NA NA NA NA NA NA NA
10 10,818 42 205600 604100 16 1500 33 282 12 NA NA NA NA NA NA NA NA 75 25 NA
這是您對第二個問題的回答的結果:
> Arbres<-kk(x.Koordinate, y.Koordinate, data=data)
> for (i in 1:length(Arbres[,1])
+ kk(Arbres(i,1),Arbres[i,2])
Error: unexpected symbol in:
"for (i in 1:length(Arbres[,1])
kk"
抱歉,我將其重命名為“ Arbre”
再次感謝,C。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.