r - 在 dplyr 中保留与其他 df 具有相同列字符的行
问题描述
我想要一个 df 保持与'column'
观察结果匹配的行df2
df <- data.frame(column=c("Obs1", "Obs2", "Obs3", "Obs4", "Obs5"), S1 = c(1.4,1.9,1.3,2,1), S2= c(0.8,2,1,3,4), S3=c(2.4,2.1,0.5,2,3), S4=c(0.5,0.6,0.9,4,5), S5=c(1.4,1.3,1.6,3,3))
df2<- data.frame(column=c("Obs2", "Obs4"), X = c(1.4,1.9), Y= c(0.8,2))
像这样的东西:
library(dplyr)
df3<- df %% keep rows which df$column observations are found in df2$column
到最终输出:
column S1 S2 S3 S4 S5
1 Obs2 1.9 2.0 2.1 0.6 1.3
2 Obs4 2.0 3.0 2.0 4.0 3.0
解决方案
这称为半连接:
df %>% semi_join(df2, by = "column")
# column S1 S2 S3 S4 S5
# 1 Obs2 1.9 2 2.1 0.6 1.3
# 2 Obs4 2.0 3 2.0 4.0 3.0
如果它有用,则相反的称为反连接(并具有一个anti_join
功能),它只保留不匹配的行。
加入比过滤更灵活,因为如果有多个列要匹配,它就可以工作。
推荐阅读
- r - 在函数中堆叠不同的数据帧
- shell - AWK 只打印有点的行
- google-oauth - 使用访问令牌/刷新令牌使 Google Calendar API 客户端库直接调用 API
- azure - 数据流执行中的感叹号
- c++ - c ++指针将结构新数组指向delphi到DLL函数
- java - Scala `Future.recoverWith` 相当于`CompletionStage`?
- java - 基于 java 流初始化一个字符串会导致一个空字符串
- javascript - 三个 js 无法读取 ShaderPass.js 中未定义的属性“原型”
- node.js - 执行 Node.js 引擎的 Semver 策略
- c++ - 对于 C++ 来说,单个 if 语句对于检查映射中是否存在键是否不好?