Поиск интерполяций по группе, возможно, с помощью dplyr

Я хочу использовать функции interp и interp2xyz из akima в dplyr конвейере, поскольку я хотел бы вычислить интерполяцию по групповой переменной и вывести значения xyz И переменную группировки. Поэтому в идеале я бы хотел что-то вроде этого (общее решение):

DATFRAME %>%
group_by(GROUPING VARIABLE) %>%
summarise(interp(x, y , z))

Таким образом, относительно просто вычислить некоторые значения интерполяции для всего фрейма данных, а затем создать другой фрейм данных, который имеет эти значения, используя функции интерполяции из пакета akima:

library(dplyr)
library(akima)

df <- data.frame(
  x=runif(200, 0, 5),
  y=runif(200, 0, 5),
  z=runif(200, 1, 2),
  Group=LETTERS[seq( from = 1, to = 2 )])

interp_df <- interp(x=df$x, y=df$y, z=df$z)

interp2xyz(interp_df, data.frame=TRUE)

Но когда я пытаюсь включить их в схему dplyr pipe, вот так:

df %>%
  group_by(Group) %>%
  summarise(interp(x=x, y=y, z=z))

Ошибка: ожидание единственного значения

Или тогда, возможно, используя mutate:

df %>%
  group_by(Group) %>%
  mutate(interp(x=x, y=y, z=z))

Ошибка: несовместимый размер (3), ожидание 100 (размер группы) или 1

Я не замужем за решением dplyr - это только подход, который я могу придумать. Кто-нибудь знает, как вычислить 3D-интерполяцию с помощью группирующей переменной, так что в результате получается фрейм данных со всеми группами и их интерполяциями?


person boshek    schedule 30.05.2016    source источник


Ответы (1)


Нет попытки, только do():

dpinterp <- function(df) {
  interp_df <- interp(x=df$x, y=df$y, z=df$z)
  interp2xyz(interp_df, data.frame=TRUE)
}

df %>%
  group_by(Group) %>%
  do(dpinterp(.))
person hrbrmstr    schedule 30.05.2016