将 Dataframe 中的每一行与r中另一 Dataframe 中的每一行进行匹配

nwnhqdif  于 2022-12-20  发布在  其他
关注(0)|答案(3)|浏览(156)

这可能是一个简单的问题,但我似乎找不到一个明显的答案。
我有两个 Dataframe ,df 1有64行,df 2有662,343行,我将df 1和df 2连接起来,其中df 1中的每一行都Map到df 2中的每一行,这样我就有42,389,952行。df 1和df 2可能分别如下所示:
DF1:|癌症|识别号||- ———————————————————-|- ————————————————-||肉瘤|小行星3435||白血病|小行星4465|
DF2:
| 基因|
| - ------|
| TP53|
新 Dataframe :
| 癌症|识别号|基因|
| - ------|- ------|- ------|
| 肉瘤|小行星3435| TP53|
| 白血病|小行星4465| TP53|
提前感谢您的帮助!

66bbxpm5

66bbxpm51#

您可能没有任何匹配列full_join。因此在匹配列参数中使用by = character()。演示

df <- data.frame(X = c(1, 2))

df2 <- data.frame(A = letters[1:3],
                  B = LETTERS[24:26])
df
#>   X
#> 1 1
#> 2 2
df2
#>   A B
#> 1 a X
#> 2 b Y
#> 3 c Z

dplyr::full_join(df2, df, by = character())
#>   A B X
#> 1 a X 1
#> 2 a X 2
#> 3 b Y 1
#> 4 b Y 2
#> 5 c Z 1
#> 6 c Z 2

reprex package(v2.0.0)于2021年6月26日创建

yb3bgrhw

yb3bgrhw2#

我想你要找的是笛卡尔积而不是左连接:

library(tidyr)
expand_grid(df1,df2)
# A tibble: 2 x 3
  Cancer      ID Gene 
  <chr>    <dbl> <chr>
1 Sarcoma   3425 TP53 
2 Leukemia  4465 TP53
23c0lvtd

23c0lvtd3#

我们可以使用merge

merge(df2, df, all = TRUE)
  • 输出
A B X
1 a X 1
2 b Y 1
3 c Z 1
4 a X 2
5 b Y 2
6 c Z 2

数据

df <- data.frame(X = c(1, 2))

df2 <- data.frame(A = letters[1:3],
                  B = LETTERS[24:26])

相关问题