R:根据唯一列过滤数据集

发布于 2024-11-08 07:32:08 字数 1311 浏览 0 评论 0原文

可能的重复:
R:跨多个列查找模式 - 可能重复()?

亲爱的大家,

这是我的数据集的一部分:

         name   chr     start      stop strand   alias 
60 uc003vqx.2  chr7 130835560 130891916      -   PODXL
61 uc003xlp.1  chr8  38387812  38445509      -     FLG
62 uc003xlu.1  chr8  38400008  38445509      -     FLG
63 uc003xlv.1  chr8  38400008  38445509      -     FLG
64 uc003xtz.1  chr8  61263976  61356508      -     CA8
65 uc003xua.1  chr8  61283183  61356508      -     CA8
66 uc010lwg.1  chr8  38387812  38445509      -     FLG
67 uc010lwh.1  chr8  38387812  38445509      -     FLG
68 uc010lwj.1  chr8  38387812  38445509      -     FLG

我想根据唯一的开始、停止和别名列来过滤数据集。最终的结果一定是这样的:

         name   chr     start      stop strand   alias 
60 uc003vqx.2  chr7 130835560 130891916      -   PODXL
61 uc003xlp.1  chr8  38387812  38445509      -     FLG
62 uc003xlu.1  chr8  38400008  38445509      -     FLG
64 uc003xtz.1  chr8  61263976  61356508      -     CA8
65 uc003xua.1  chr8  61283183  61356508      -     CA8
66 uc010lwg.1  chr8  38387812  38445509      -     FLG

有谁知道这个问题有没有解决办法? 谢谢!

Possible Duplicate:
R: Finding patterns across multiple columns- possibly duplicated()?

Dear all,

Here is a part of my dataset:

         name   chr     start      stop strand   alias 
60 uc003vqx.2  chr7 130835560 130891916      -   PODXL
61 uc003xlp.1  chr8  38387812  38445509      -     FLG
62 uc003xlu.1  chr8  38400008  38445509      -     FLG
63 uc003xlv.1  chr8  38400008  38445509      -     FLG
64 uc003xtz.1  chr8  61263976  61356508      -     CA8
65 uc003xua.1  chr8  61283183  61356508      -     CA8
66 uc010lwg.1  chr8  38387812  38445509      -     FLG
67 uc010lwh.1  chr8  38387812  38445509      -     FLG
68 uc010lwj.1  chr8  38387812  38445509      -     FLG

I would like to filter the dataset based on unique start,stop and alias column. The final result must be like this:

         name   chr     start      stop strand   alias 
60 uc003vqx.2  chr7 130835560 130891916      -   PODXL
61 uc003xlp.1  chr8  38387812  38445509      -     FLG
62 uc003xlu.1  chr8  38400008  38445509      -     FLG
64 uc003xtz.1  chr8  61263976  61356508      -     CA8
65 uc003xua.1  chr8  61283183  61356508      -     CA8
66 uc010lwg.1  chr8  38387812  38445509      -     FLG

Does anyone know if there is a solution for this?
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

护你周全 2024-11-15 07:32:21

我认为您的示例输出有错误,请尝试

dfrm$comb <-  with(dfrm, paste(start,stop, alias, sep="+"))
dfrm[!duplicated(dfrm$comb), 1:6]
#---
         name  chr     start      stop strand alias
60 uc003vqx.2 chr7 130835560 130891916      - PODXL
61 uc003xlp.1 chr8  38387812  38445509      -   FLG
62 uc003xlu.1 chr8  38400008  38445509      -   FLG
64 uc003xtz.1 chr8  61263976  61356508      -   CA8
65 uc003xua.1 chr8  61283183  61356508      -   CA8

I think your example output is in error, Try

dfrm$comb <-  with(dfrm, paste(start,stop, alias, sep="+"))
dfrm[!duplicated(dfrm$comb), 1:6]
#---
         name  chr     start      stop strand alias
60 uc003vqx.2 chr7 130835560 130891916      - PODXL
61 uc003xlp.1 chr8  38387812  38445509      -   FLG
62 uc003xlu.1 chr8  38400008  38445509      -   FLG
64 uc003xtz.1 chr8  61263976  61356508      -   CA8
65 uc003xua.1 chr8  61283183  61356508      -   CA8
爱冒险 2024-11-15 07:32:20

使用 duplicated 函数:

复制数据:

x <- "         name   chr     start      stop strand   alias 
60 uc003vqx.2  chr7 130835560 130891916      -   PODXL
61 uc003xlp.1  chr8  38387812  38445509      -     FLG
62 uc003xlu.1  chr8  38400008  38445509      -     FLG
63 uc003xlv.1  chr8  38400008  38445509      -     FLG
64 uc003xtz.1  chr8  61263976  61356508      -     CA8
65 uc003xua.1  chr8  61283183  61356508      -     CA8
66 uc010lwg.1  chr8  38387812  38445509      -     FLG
67 uc010lwh.1  chr8  38387812  38445509      -     FLG
68 uc010lwj.1  chr8  38387812  38445509      -     FLG"

dat <- read.table(textConnection(x), header=TRUE)

删除重复项:

dat[!duplicated(dat[, c("start", "stop", "alias")]), ]

         name  chr     start      stop strand alias
60 uc003vqx.2 chr7 130835560 130891916      - PODXL
61 uc003xlp.1 chr8  38387812  38445509      -   FLG
62 uc003xlu.1 chr8  38400008  38445509      -   FLG
64 uc003xtz.1 chr8  61263976  61356508      -   CA8
65 uc003xua.1 chr8  61283183  61356508      -   CA8

Use the duplicated function:

Replicate the data:

x <- "         name   chr     start      stop strand   alias 
60 uc003vqx.2  chr7 130835560 130891916      -   PODXL
61 uc003xlp.1  chr8  38387812  38445509      -     FLG
62 uc003xlu.1  chr8  38400008  38445509      -     FLG
63 uc003xlv.1  chr8  38400008  38445509      -     FLG
64 uc003xtz.1  chr8  61263976  61356508      -     CA8
65 uc003xua.1  chr8  61283183  61356508      -     CA8
66 uc010lwg.1  chr8  38387812  38445509      -     FLG
67 uc010lwh.1  chr8  38387812  38445509      -     FLG
68 uc010lwj.1  chr8  38387812  38445509      -     FLG"

dat <- read.table(textConnection(x), header=TRUE)

Remove duplicates:

dat[!duplicated(dat[, c("start", "stop", "alias")]), ]

         name  chr     start      stop strand alias
60 uc003vqx.2 chr7 130835560 130891916      - PODXL
61 uc003xlp.1 chr8  38387812  38445509      -   FLG
62 uc003xlu.1 chr8  38400008  38445509      -   FLG
64 uc003xtz.1 chr8  61263976  61356508      -   CA8
65 uc003xua.1 chr8  61283183  61356508      -   CA8
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文