r - 加入数据帧时 R 中的 Where 子句
问题描述
我是 R 编程的新手。我的任务是使用 where 条件过滤器加入数据框。我下面有 2 个数据框我想通过 col1 将 df2$B_col2 加入 df1,但前提是 df1$A_col2=1。
我使用下面的代码给出了结果,但我知道代码是有效的。如果在加入表格本身时有任何方法可以删除记录,请告诉我。
Df1 col1 A_col2
1 b 1
2 a 1
3 a 0
4 c 0
5 d 1
Df2 col1 B_col2
1 a 10
2 b 20
3 c 30
4 d 40
5 e 50
代码
df3 <- left_join(df1,df2, by = "col1")
df4 <- df3[df3$df1col2 == 1,]
输出
col1 df1col2 df2col2
1 b 1 20
2 a 1 10
5 d 1 40
解决方案
如果您使用base R,您可以尝试merge
+ subset
,如下所示
> subset(merge(df1, df2, all.x = TRUE), A_col2 > 0)
col1 A_col2 B_col2
1 a 1 10
3 b 1 20
5 d 1 40
或match
+subset
> subset(
+ transform(
+ df1,
+ B_col2 = df2$B_col2[match(col1, df2$col1)]
+ ),
+ A_col2 > 0
+ )
col1 A_col2 B_col2
1 b 1 20
2 a 1 10
5 d 1 40
一个data.table
选项
> setDT(df2)[setDT(df1), on = .(col1)][A_col2 > 0]
col1 B_col2 A_col2
1: b 20 1
2: a 10 1
3: d 40 1
推荐阅读
- vim - Vim 无法识别 l 键 &
- python-3.x - 错误:Google Translate API 中的 503 DNS 解析失败,但仅在通过终端执行 Python 文件时
- r - 循环句子以查看句子是否包含触发词
- javascript - 如何让用户登录我的网站并知道他是否已登录
- google-apps-script - 是否有一个脚本可以在列表中的所有单元格上创建链接,并且一旦您单击它们将您发送到相应的(同名)选项卡?
- reactjs - 输入后如何保持搜索状态?
- xamarin - Xamarin - 将 ActivityIndicator 可见性绑定到异步任务完成
- html - 为什么导航栏不在顶部?
- sql - 在 SQL 中是否有更简洁或更简单的方法来实现这一点?
- jquery - ma5menu 移动菜单未关闭