loess()在数据子集上

时间:2014-03-12 19:03:13

标签: r apply loess

如果之前已经回答过道歉,但我无法找到适用的例子。

我试图去除一些数据以进行变差函数分析。

我有一个数据框' aa'用列' y' '长' ' LAT'和' z'。

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

最后,我需要一个“龙”的数据帧。 '纬度' '残留'和' Z'残差来自多个特定的黄土物体。

鉴于我对R的了解有限,我无法找出使这种情况发生的正确语法。

我假设可以使用其中一个* apply函数,但我不太了解该语言,无法正确编写。

感谢您提供任何指导或澄清。

1 个答案:

答案 0 :(得分: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