提问人:marcelklib 提问时间:7/20/2023 最后编辑:jpsmithmarcelklib 更新时间:7/20/2023 访问量:24
R fuzzy anti join match_fun中的表顺序反转
reverse table order in R fuzzy anti join match_fun
问:
我正在尝试运行此代码:
main_df %>%
fuzzy_anti_join(secondary_df, match_fun = list(`==`, `%within%`),
by = c("ID","Date" = "Date_Interval"))
问题是它返回以下错误: dplyr::group_by().datacolError in
: ! Must group by variables found in
. ✖ Column
is not found.
我已经知道为什么会这样了。“日期”列位于右侧表“secondary_df”中,“Date_Interval”列位于左侧表“main_df”中。因此,它不会在左侧找到“日期”,反之亦然。
但是,我需要将“main_df”保留为左表,将“secondary_df”保留为右表。我显然不能像这样简单地切换我的连接变量:因为这会破坏目的,我想匹配日期在日期间隔内的位置。by = c("ID","Date_Interval"= "Date")
我也试过这个:
test_df <- main_df %>%
fuzzy_anti_join(secondary_df,match_fun = list(`==`, `.y %within% .x`),
by = c("ID","Date" = "Date_Interval"))
但它不能正确处理match_fun。我仍然有一种感觉,有一种方法可以解决它,通过改变比赛乐趣的部分来切换桌子,但我还没有找到它。%within%
请帮忙!
答:
0赞
marcelklib
7/20/2023
#1
经过反复试验,我发现这有效:
main_df %>% fuzzy_anti_join(secondary_df, match_fun = list(`==`, function(x, y) y %within% x),
by = c("ID","Date_Interval" = "Date"))
你不能在“by =”参数中更改表格的顺序,这就是为什么我有两个切换Date_Interval和日期。但是,您可以创建一个函数,该函数将在 x 内计算 y,而不是相反。
下一个:按组和间隔左连接数据帧
评论