我有一个关于miRNA-SNP数据框,一个miRNA对应好几个SNP,我想根据miRNA名称提取出相应的行,试过match和merge函数,
DEsnp <- snp[match(snp$miRNA, snp1$miRNA), ]
其中snp是有重复miRNA名称的数据框,snp1$miRNA是一列无重复的miRNA名称的字符串
提取出来的行漏了好多,该怎么编写代码能纠正呢?
引用 皆我百晓生 小程序回复内容作答:
你可以尝试使用duplicated函数来找到miRNA名称重复的行,并使用它来进行筛选。代码如下:
DEsnp <- snp[duplicated(snp$miRNA) & !duplicated(snp$miRNA, fromLast = TRUE), ]
其中,duplicated(snp$miRNA)会返回一个逻辑向量,表示miRNA列中是否存在重复的miRNA名称。而!duplicated(snp$miRNA, fromLast = TRUE)会返回一个逻辑向量,表示从后往前是否有重复的miRNA名称。
通过将这两个条件进行逻辑与运算,即duplicated(snp$miRNA) & !duplicated(snp$miRNA, fromLast = TRUE),会得到最终的筛选结果,获取miRNA名称有重复而其他几列数据无重复的行。
希望对你有帮助!