R слияния на основе условия, отличного от равенства

У меня есть dataframe, который выглядит примерно так:

date minutes_since_midnight value
2015-01-01 50 2
2015-01-01 60 1.5
2015-01-02 45 3.3
2015-01-03 99 5.5

и другой блок данных, выглядящий примерно таким образом

date minutes_since_midnight other_value
2015-01-01 55 12
2015-01-01 80 33
2015-01-02 45 88

Я хочу добавить еще один столбец в первый фрейм данных, который является значением boolean, существует ли строка во втором кадре данных для равного значения в дате, а затем minutes_since_midnight, которая меньше или равна minutes_since_midnight из первого кадра данных. Итак, для приведенных выше данных мы получим:

date minutes_since_midnight value has_other_value
2015-01-01 50 2 False
2015-01-01 60 1.5 True
2015-01-02 45 3.3 True
2015-01-03 99 5.5 False

Как я могу это сделать?

Надеюсь, это имеет смысл,

Заранее спасибо

2 ответа

Нельзя ли переименовать переменные minutes_since_midnight в minutes_since_midnight1 и minutes_since_midnight2, объединить два кадра данных вместе, а затем создать требуемый has_other_value с инструкцией if else.


Я бы, вероятно, присоединился к data.frames вдоль строк другого ответа, затем создавал переменную и отбрасывал ненужные столбцы. Но здесь вариант с пакетом dplyr для выполнения шагов по мере их описания:

library(dplyr)
df1$has_other_value <-
 left_join(df1, df2 %>%
 group_by(date) %>%
 summarise(minMins = min(minutes_since_midnight)),
 by="date")$minMins <= df1$minutes_since_midnight
df1$has_other_value[is.na(df1$has_other_value)] <- FALSE

Результат:

date minutes_since_midnight value has_other_value
1 2015-01-01 50 2.0 FALSE
2 2015-01-01 60 1.5 TRUE
3 2015-01-02 45 3.3 TRUE
4 2015-01-03 99 5.5 FALSE

licensed under cc by-sa 3.0 with attribution.