假设我有两个看起来像这样的数据框:
df1
ID Chr
1 a
2 a
3 a
4 a
5 a
6 a
7 b
8 b
9 b
10 b
11 c
12 c
13 a
14 a
15 a
16 a
17 c
18 c
19 c
20 a
df2
ID Chr
1 a
2 a
3 b
4 b
5 b
6 b
7 b
8 b
9 b
10 b
11 c
12 c
13 a
14 a
15 c
16 c
17 c
18 a
19 a
20 a
如果查看两个df,您会发现它们非常相似。实际上,如果是这样,我认为它们是同一集合的一部分。但问题是它们之间的对齐方式不太好。在这个小样本中,看起来似乎没什么大不了,但是对于具有1000行以上的实际数据,对齐是个大问题。
问题是我的匹配算法非常基础,将df1
的一行与df2
的相应行进行比较,给出1的分数表示存在匹配,0表示不匹配。使问题复杂化的是,我也不一次匹配数据帧的所有行。由于这种情况,我必须进行部分比赛。例如,使用上述数据,我将匹配5行。 df1
的前五行与df2
的五行。当我最小化规模时,问题变得更糟。
所以问题是我可以对对齐方式做些什么,而不必立即匹配整个dfs。
答案 0 :(得分:2)
我不确定我是否正确理解你。
如果只想比较chr
列,则可以将两个表连接起来,然后检查chr
列。
如果使用dplyr
软件包,这非常容易。
首先,我创建一些玩具数据:
df1 <- data.frame(id = 1:5, chr = c("a", "a", "a", "b", "b"))
df2 <- data.frame(id = 1:5, chr = c("a", "b", "b", "b", "b"))
library(dplyr)
left_join(df1, df2, by = "id", suffix = c("_1", "_2")) %>%
mutate(flag = if_else(chr_1 == chr_2, 1, 0))
id chr_1 chr_2 flag
1 1 a a 1
2 2 a b 0
3 3 a b 0
4 4 b b 1
5 5 b b 1