r - dplyr 连接 - where 子句中的算术
问题描述
我正在尝试将算术添加到我的 dplyr 连接中的 where 子句。我认为这些被称为过滤连接。在我的示例中,我希望表 sdata 和 fdata ON val 和 id。但我只想加入 val > id 的行。
# DATASET GENERATION
id <- c(1,1,1,1,
2,2,2,2,2,2,
3,3,3,3,3,3,
5,5,5,5,
8,8,8,8,
13,13,13)
fyear <- c(1998,1999,2000,2001,1998,1999,2000,2001,2002,2003,
1998,1999,2000,2001,2002,2003,1998,1999,2000,2001,
1998,1999,2000,2001,1998,1999,2000)
byear <- c(1990,1995,2000,2005)
eyear <- c(1995,2000,2005,2010)
val <- c(3,1,5,6)
sdata <- tbl_df(data.frame(byear, eyear, val))
fdata <- tbl_df(data.frame(id, fyear))
# PSEUDO CODE FOR RESULT I AM TRYING TO ACHIEVE
inner_join(sdata, fdata, by=c("val"<"id"))
任何帮助,将不胜感激
解决方案
您可以使用包blurjoin:
library(fuzzyjoin)
fuzzy_inner_join(sdata, fdata, by=c("val"="id"),`<`)
# A tibble: 48 x 5
# byear eyear val id fyear
# <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1990 1995 3 5 1998
# 2 1990 1995 3 5 1999
# 3 1990 1995 3 5 2000
# 4 1990 1995 3 5 2001
# 5 1990 1995 3 8 1998
# 6 1990 1995 3 8 1999
# 7 1990 1995 3 8 2000
# 8 1990 1995 3 8 2001
# 9 1990 1995 3 13 1998
# 10 1990 1995 3 13 1999
推荐阅读
- python - 如何将python字节数组追加到C++
- php - update on change with livewire?
- java - 如何发布没有源的 JAR?
- android - 如何在不使用短信检索器的代码“getAppHash()”的情况下检测“离子电容器”中的短信
- excel - VBA 从 Excel 更新 Word 中的书签 - 只运行一次?
- windows - 有没有办法在不改变相对 zorder 的情况下设置窗口的焦点?
- javascript - 使用 findById() 进行 Mongoose 条件填充
- python - Gnupg 不输出加密文件
- java - 有没有办法使用 Java 中 Azure Functions 的 @EventHubTrigger 获取事件(EventHub)的标头数据?
- arrays - C:令牌系统令牌化,但执行 if 语句失败