如何筛选data frame中两列wpid值相同的行
解决方法:筛选DataFrame中两列同名值相等的行
你的需求很明确——要从有两个同名wpid列的DataFrame里,只保留两列wpid值完全相同的行,下面给你几种实用的R语言解决方案:
方法1:直接使用列索引筛选
因为两个wpid列分别是第1列和第3列,我们可以直接通过列位置来比较:
# 筛选两列wpid值相等的行 filtered_df <- wp_data_ensembl[wp_data_ensembl[, 1] == wp_data_ensembl[, 3], ]
方法2:先重命名列再筛选(更直观)
为了避免重名列带来的歧义,先给两列改个清晰的名字,再进行筛选:
# 给重名列重命名 colnames(wp_data_ensembl) <- c("wpid_left", "gene", "wpid_right", "name") # 筛选两列值相等的行 filtered_df <- wp_data_ensembl[wp_data_ensembl$wpid_left == wp_data_ensembl$wpid_right, ]
方法3:使用dplyr包(tidyverse风格)
如果你习惯用tidyverse的语法,dplyr的rename+filter组合会更简洁:
library(dplyr) filtered_df <- wp_data_ensembl %>% # 给两个wpid列重命名 rename(wpid_first = 1, wpid_second = 3) %>% # 筛选值相等的行 filter(wpid_first == wpid_second)
执行完上面任意一种方法后,你可以用head(filtered_df)查看结果,就能得到只保留两列wpid值相同的行啦~
内容的提问来源于stack exchange,提问作者Krutik
相关产品推荐
相关产品推荐

