0

これが以前に回答されている場合は申し訳ありませんが、該当する例が見つかりません。

バリオグラム分析のために一部のデータのトレンドを除去しようとしています。

列「y」、「long」、「lat」、「z」を持つデータフレーム「aa」があります。

実行しようとしています: loess(aa2$y ~ aa$long + aa$lat, aa, degree =2)因子 z の各レベルで。

最後に、「Long」、「Lat」、「Residual」、および「Z」のデータフレームが必要です。これは、複数の facor 固有の黄土オブジェクトからの残差です。

R に関する知識が限られているため、これを実現するための適切な構文を理解できません。

*apply 関数の 1 つを使用できると想定していますが、適切に記述できるほど言語をよく知りません。

ガイダンスや説明をありがとう。

4

1 に答える 1

0

このような?

aa <- data.frame(y=rnorm(100),long=rnorm(100),lat=rnorm(100),Z=rep(1:4, each=25))

result <- do.call(rbind,lapply(unique(aa$Z),function(z){
  df <- aa[aa$Z==z,]
  fit <- loess(y~long+lat,df,degree=2)
  cbind(Z=z,long=df$long,lat=df$lat,residuals=fit$residuals)
}))
head(result)
#   Z       long         lat  residuals
# 1 1  0.9622113  0.03114804 -0.2189496
# 2 1 -0.6539525  0.32908716  1.3904483
# 3 1  1.0066978 -0.78833830  0.1044707
# 4 1 -1.0873116 -0.55218226  1.8526030
# 5 1 -1.1286776  1.68879949  0.2459814
# 6 1 -1.0052768 -0.85890027 -0.9842824
于 2014-03-12T19:19:02.677 に答える