R语言 筛选+匹配

Posted 基督徒Isaac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言 筛选+匹配相关的知识,希望对你有一定的参考价值。

背景:如何匹配向量来筛选,而不是一个一个地使用“或”字符

解决方案:使用%in%替代

library(tidyverse)

A <- data.frame(a = 1:5, b = 2:6); A

B <- c(2, 4, 5); B

# 请问,如何筛选出a == B?

filter(A, a == B) # In a == B : 长的对象长度不是短的对象长度的整倍数

subset(A, a == B) # In a == B : 长的对象长度不是短的对象长度的整倍数

# 都报错了

# 祷告

filter(A, a %in% B)

subset(A, a %in% B)

致谢:
求人是没有用的,信实的上帝是唯一的救法

参考文献:

https://www.jianshu.com/p/90b419e2c6bd

非独立情况:多重条件筛选

背景:

解决方案:用merge函数、dplyr::left_join

library(tidyverse)

# 独立情况

A <- data.frame(a = 1:5, b = 2:6, c = 3:7); A

B <- data.frame(a = 1:3, b = 2:4); B

A %>% filter(a %in% B$a, b %in% B$b)
A %>% subset(a %in% B$a, b %in% B$b)


# 非独立情况:多重条件筛选

A <- data.frame(a = rep(1:2, each = 2), 
                b = 1:2,
                c = c("找我","找我","憋找我","找我")); A

B <- data.frame(a = c(1,1,1,2),
                b = c(0,1,2,2),
                c = c("找不到你","找到你","找到你","找到你")); B

# 根据B,在A中筛选出(a, b) = (1, 1)、(1, 2)、(2, 2)

# 即:(a=1 且 b=1)、(a=1 且 b=2)、(a=2 且 b=2)

A %>% filter(a == 1 & b == 1 | a == 1 & b == 2 | a == 2 & b == 2) %>% 
  mutate(d = rep("找到你", 3))
A %>% subset(a == 1 & b == 1 | a == 1 & b == 2 | a == 2 & b == 2) %>% 
  cbind(d = rep("找到你", 3))

# 用merge函数、dplyr::left_join

inner_join(A, B, by = c("a", "b"))

merge(A, B, by = c("a", "b"))

结果:

参考文献:

R语言中如何实现vlookup? - 知乎
https://www.zhihu.com/question/40738379

如何用R语言匹配两个表的数据? - 添墨的回答 - 知乎
https://www.zhihu.com/question/39755875/answer/102167249

致谢:

以上是关于R语言 筛选+匹配的主要内容,如果未能解决你的问题,请参考以下文章

r语言match函数怎么用

R语言mRNA差异表达分析

埃拉托色尼筛选法的步骤

埃拉托色尼筛选法求素数

R语言筛选dataframe包含特定字符串的行实战:筛选包含特定字符串的行

c语言中用筛选法求素数