r - 在不同的数据框中查找相似的列值,然后创建一个新的数据框
问题描述
之前已经提出过与此类似的问题,但这些问题的解决方案并不完全符合我的目的。假设我有两个不同的数据框:
A <- c("Gene1", "Gene3", "Gene4", "Gene9")
B <- c(-10, -4, 4, 19)
df1 <- data.frame(A, B)
head(df1)
A B
1 Gene1 -10
2 Gene3 -4
3 Gene4 4
4 Gene9 19
A <- c("Gene3", "Gene4", "Gene7", "Gene9")
B <- c(5, 2, 9, 11)
df2 <- data.frame(A, B)
head(df2)
A B
1 Gene3 5
2 Gene4 2
3 Gene7 9
4 Gene9 11
现在我想创建一个新的数据框,其中包含 df1 和 df2 都具有相似的 A 列的值(例如 Gene3、Gene4 和 Gene9),以及来自 df1 和 df2 的 B 列的 BOTH 值,如下所示:
A <- c("Gene3", "Gene4", "Gene9")
B_df1 <- c(-4, 4, 19)
B_df2 <- c(5, 2, 11)
dfcombo <- data.frame(A, B_df1, B_df2)
head(dfcombo)
A B_df1 B_df2
1 Gene3 -4 5
2 Gene4 4 2
3 Gene9 19 11
然后,我还想要另一个数据框,其中仅包含对 df1 的 A 列具有唯一值的行,而另一个数据框仅包含对 df2 具有唯一 A 列值的行。
#the final printout for this example should look like this:
head(df1_unique)
A B
1 Gene1 -10
head(df2_unique)
A B
1 Gene7 9
所以最后我应该得到 3 个数据框。谢谢!
解决方案
碱基R
merge(df1, df2, by = "A", suffixes = c("_df1", "_df2"))
# A B_df1 B_df2
# 1 Gene3 -4 5
# 2 Gene4 4 2
# 3 Gene9 19 11
tidyverse
library(dplyr)
inner_join(df1, df2, by = "A", suffix = c("_df1", "_df2"))
# A B_df1 B_df2
# 1 Gene3 -4 5
# 2 Gene4 4 2
# 3 Gene9 19 11
推荐阅读
- mysql - 如何在存储过程中传递 WHERE ... IN 中的多个变量?
- typescript - VSCode 导入忽略符号链接以支持更深的 node_modules
- javascript - 循环遍历对象并显示重复值一次
- scala - Spark-Scala 关于使用 Case Class Demiliter 的问题
- python - 获取数据框中字典的长度
- typescript - 将泛型类型参数传递给 Knexjs 插入
- python - 使用熊猫从系列中提取多个日期
- python - 从机器人框架中的属性文件中读取基于部分的值
- javascript - Select2 下拉菜单的大小正在缩小
- python - Django 模型:如何仅从另一个模型访问与特定用户相关的字段