Я уверен, что это очень распространенный метод, но у меня возникают проблемы с его точным изложением.У меня есть длинный data.frame
с тремя столбцами: столбец date_time, числовой столбец (df$property1
) и строковый столбец.
У меня есть еще один data.frame
, выступающий в качестве справочной таблицы, обеспечивающей связь между"property1" и другое числовое свойство, "property2".
Я хотел бы добавить столбец df$property2
к df
, который является приблизительным результатом использования линейной интерполяции df$property1
на основе отношения property1 и property2 таблицы поиска.Например, если df$property1
окажется равным 10, df$property2
будет равно 20, или если df$property1
окажется равным 145, df$property2
будет где-то ниже, но довольно близко к 1500.
IЯ надеюсь научиться создавать df$property2
эффективно и заинтересован в изучении tidyverse
и не-тидиверс методов.
library(tidyverse)
# create example data frame needing new column
date_time <- seq(from=as.POSIXct("2015-12-10 12:00", tz="GMT"),
to=as.POSIXct("2015-12-10 18:00", tz="GMT"), by="1 hours")
property1 <- c(1,45,12,99, 105,3,149)
df1 <- data.frame(date_time, property1) %>% mutate(class = "a")
property1 <- c(50,10,66,147, 11,190,80)
df2 <- data.frame(date_time, property1) %>% mutate(class = "b")
df <- rbind(df1, df2)
# create example look up table
property1_lookup <- c(1, 10, 15, 50, 100, 150, 99999)
property2_lookup <- c(0.001, 20, 30, 100, 500, 1500, 1501)
lookup <- data.frame(property1_lookup, property2_lookup)
Спасибо.