loess() для подмножеств данных

Извиняюсь, если на этот вопрос уже был дан ответ, но я не могу найти подходящий пример.

Я пытаюсь получить некоторые данные для анализа вариограммы.

У меня есть фрейм данных 'aa' со столбцами 'y' 'long', 'lat' и 'z'.

Я пытаюсь бежать:loess(aa2$y ~ aa$long + aa$lat, aa, degree =2) на каждом уровне фактора z.

В конце концов, мне нужен фрейм данных 'Long', Lat ',' Residual 'и' Z ', остатки, поступающие от нескольких зависящих от фактора объектов лесса.

Учитывая мое ограниченное знание R, я не могу понять правильный синтаксис, чтобы это произошло.

Я предполагаю, что можно использовать одну из *apply функций, но я недостаточно хорошо знаю язык, чтобы написать его правильно.

Спасибо за любые указания или разъяснения.

1 ответ

Решение

Как это?

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
Другие вопросы по тегам