R слияние на основе условия, отличного от равенства
у меня есть фрейм данных, который выглядит примерно так:
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 to minutes_since_midnight1 и minutes_since_midnight2, объединить два фрейма данных вместе, а затем создать необходимый has_other_value переменная с оператором if else.
Я, вероятно, присоединюсь к данным.рамки вдоль строк другого ответа, затем создайте переменную и удалите ненужные столбцы. Но вот вариант использования 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