R基于非相等条件的合并
我有一个数据框,看起来像:R基于非相等条件的合并,r,merge,dataframe,R,Merge,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 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
我要做的是在第一个数据帧中添加另一列,这是布尔值无论第二个数据帧中是否存在一行,该行在日期列中的值相等,然后是一个自午夜起的分钟数,该值小于或等于自第一个数据帧起的自午夜起的分钟数。因此,对于上述示例数据,我们将得到:
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
我该怎么做
希望这有意义
提前感谢您能否将变量从午夜起的分钟重命名为从午夜起的分钟1和从午夜起的分钟2,将两个数据帧合并在一起,然后使用if-else语句创建所需的has\u other\u值变量 我可能会沿着另一个答案的行连接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
是的,你说得对,那会有用的,我会试试的,谢谢!我所希望的是像merge这样的东西,它已经具备了条件,为我做了工作。。但我可以按照你的建议编写自己的函数。Cheers如果两个数据帧中都有重复的日期值,则在合并之前需要对第二个数据帧进行聚合,以便将每个日期压缩为一行,其中包含自午夜以来该日期的最小
分钟数值。谢谢-这正是我想要的,我将深入研究dplyr包,以便更熟悉这些函数。
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