Я пытаюсь соединить два фрейма данных, каждый с тремя столбцами. Первый фрейм данных содержит дату, имена переменных и прогнозные значения, а второй фрейм данных содержит дату, имена переменных и фактические значения. Цель моего объединения - сопоставить прогнозные значения с фактическими значениями по дате и правильному имени переменной погоды для точного анализа.
Мой первый кадр данных x выглядит следующим образом
x <- structure(list(Date = structure(c(1588060800, 1588060800, 1588060800,
1588060800, 1588060800, 1588060800, 1588060800, 1588060800, 1588060800,
1588060800, 1588060800, 1588060800), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), wx_vars = c("Wx1_Temperature", "Wx1_Precipitation",
"Wx1_CloudCover", "Wx1_DewPoint", "Wx1_WindSpeed", "Wx1_SolarRadiation",
"Wx2_Temperature", "Wx2_Precipitation", "Wx2_CloudCover", "Wx2_DewPoint",
"Wx2_WindSpeed", "Wx2_SolarRadiation"), wx_forecast = c(56.92,
0.0046, 77.46, 50.26, 7.42, 12.93, 57.05, 0.0037, 68.3, 50.5,
7.32, 19.02)), row.names = c(NA, 12L), class = "data.frame")
Мой второй кадр y выглядит следующим образом:
y <- structure(list(Date = structure(c(1588057200, 1588057200, 1588057200,
1588057200, 1588060800, 1588060800, 1588060800, 1588060800, 1588060800,
1588060800, 1588064400, 1588064400), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), wx_vars = c("Actual_CloudCover", "Actual_WindSpeed",
"Actual_Precipitation", "Actual_SolarRadiation", "Actual_Temperature",
"Actual_DewPoint", "Actual_CloudCover", "Actual_WindSpeed", "Actual_Precipitation",
"Actual_SolarRadiation", "Actual_Temperature", "Actual_DewPoint"
), wx_actuals = c(54.8, 5.63, 0, 26.1, 57.32, 49.99, 61, 7.24,
0.00015, 23.4, 59.84, 52.11)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -12L))
Как вы можете видеть, на временной шкале прогноза x есть два отдельных прогноза погоды, точность которых я хочу оценить: Wx1 и Wx2. У каждой строки есть разные переменные погоды, перечисленные после Wx1 или Wx2, которые точно совпадают с фактическими данными во фрейме данных y. Даты имеют одинаковый формат как x, так и y, и будут работать в простом inner_join, но, учитывая различия строк в столбце wx_vars фрейма данных x и y, я пытался работать с fuzzyjoin. Пока не повезло
Вот что я попробовал, и моя самая большая проблема - это то, что я включил в качестве названия вопроса. Я еще не нашел пример fuzzyjoin для двух столбцов, где сопоставление одного столбца будет работать в обычном соединении, в то время как сопоставление другого столбца требует fuzzyjoin, в моем случае частичное сопоставление строк.
wx_analysis_1<- fuzzy_inner_join(x, y, by = c("Date", "wx_vars"="wx_vars"), match_fun = str_detect)
wx_analysis_2 <- regex_inner_join(x, y, by = c("Date", "wx_vars"="wx_vars"))
Не повезло ни с одним из этих решений. Есть ли какой-то синтаксис, который мне не хватает для лучшей обработки даты? Я чувствую, что fuzzy_inner_join от wx_vars должен работать, но столбец Дата может быть моей проблемой.
Спасибо