Insert rows into existing columns and do interpolation if values are missing

Hello there,

In this example, I want to insert the interpolation_vector into Petal.Width column then interpolate the Petal.Length. How should I do that? The best I could think of is to create individual columns but I'm sure it's not ideal.

Thank you

library(dplyr)

interpolation_vector <- c(0.25, 1.75, 1.95)

iris <- iris %>%
  select(Species, Petal.Width, Petal.Length) %>%
  group_by(Species) %>%
  mutate(Petal.Length1 = approx(x = Petal.Width, y = Petal.Length, xout = interpolation_vector[1])$y) %>%
  mutate(Petal.Length2 = approx(x = Petal.Width, y = Petal.Length, xout = interpolation_vector[2])$y) %>%
  mutate(Petal.Length3 = approx(x = Petal.Width, y = Petal.Length, xout = interpolation_vector[3])$y) %>%
  ungroup()
iris

tail(iris, 15)

# A tibble: 150 x 6
   Species Petal.Width Petal.Length Petal.Length1 Petal.Length2 Petal.Length3
   <fct>         <dbl>        <dbl>         <dbl>         <dbl>         <dbl>
 1 setosa          0.2          1.4        1.4367            NA            NA
 2 setosa          0.2          1.4        1.4367            NA            NA
 3 setosa          0.2          1.3        1.4367            NA            NA
 4 setosa          0.2          1.5        1.4367            NA            NA
 5 setosa          0.2          1.4        1.4367            NA            NA
 6 setosa          0.4          1.7        1.4367            NA            NA
 7 setosa          0.3          1.4        1.4367            NA            NA
 8 setosa          0.2          1.5        1.4367            NA            NA
 9 setosa          0.2          1.4        1.4367            NA            NA
10 setosa          0.1          1.5        1.4367            NA            NA
11 setosa          0.2          1.5        1.4367            NA            NA
12 setosa          0.2          1.6        1.4367            NA            NA
13 setosa          0.1          1.4        1.4367            NA            NA
14 setosa          0.1          1.1        1.4367            NA            NA
15 setosa          0.2          1.2        1.4367            NA            NA
# ... with 135 more rows

# A tibble: 15 x 6
   Species   Petal.Width Petal.Length Petal.Length1 Petal.Length2 Petal.Length3
   <fct>           <dbl>        <dbl>         <dbl>         <dbl>         <dbl>
 1 virginica       2.300        6.1              NA        4.9409         5.435
 2 virginica       2.4          5.6              NA        4.9409         5.435
 3 virginica       1.8          5.5              NA        4.9409         5.435
 4 virginica       1.8          4.8              NA        4.9409         5.435
 5 virginica       2.1          5.4              NA        4.9409         5.435
 6 virginica       2.4          5.6              NA        4.9409         5.435
 7 virginica       2.300        5.100            NA        4.9409         5.435
 8 virginica       1.9          5.100            NA        4.9409         5.435
 9 virginica       2.300        5.9              NA        4.9409         5.435
10 virginica       2.5          5.7              NA        4.9409         5.435
11 virginica       2.300        5.2              NA        4.9409         5.435
12 virginica       1.9          5                NA        4.9409         5.435
13 virginica       2            5.2              NA        4.9409         5.435
14 virginica       2.300        5.4              NA        4.9409         5.435
15 virginica       1.8          5.100            NA        4.9409         5.435

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.