0

如果之前已经回答过这个问题,我深表歉意,但我找不到适用的例子。

我正在尝试去除一些数据以进行变异函数分析。

我有一个数据框“aa”,其中包含“y”、“long”、“lat”和“z”列。

我正在尝试运行: loess(aa2$y ~ aa$long + aa$lat, aa, degree =2)在因子 z 的每个级别上。

最后,我需要一个“Long”、“Lat”、“Residual”和“Z”的数据框,残差来自多个特定因子的黄土对象。

鉴于我对 R 的了解有限,我无法找出正确的语法来实现这一点。

我假设可以使用 *apply 函数之一,但我不太了解该语言以正确编写它。

感谢您的任何指导或澄清。

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 回答