当 R 中所有行的一列不同时,删除除一个重复行以外的所有行

标签 r dataframe merge duplicates

<分区>

我有一个大型数据集,其中包含一些重复的行。但是,重复的行在所有列中都是相同的,只有一列除外,因此很难使用 dplyr duplicated() 或 unique()。正如您在下面看到的(短数据示例),除了第一列 gene_ID 之外,这些行几乎相同,其中条目的末尾不同。

<表类="s-表"> <头> gene_ID Gene_Identifier 类别 长度 <正文> Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113515.7 Wdfy1 拼接 4551 Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113514.7 Wdfy1 拼接 4551 Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113513.7 Wdfy1 拼接 4551 Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113512.7 Wdfy1 拼接 4551

我想删除除顶部/第一个条目之外的所有行。

我试过:

test <- aggregate(gene_ID ~ ., df, toString)

^^ 这合并了比我预期更多的行(~4,000 对~ 50),所以我不确定这是否正确。我目前正在逐行查看这是否确实符合我的要求

test2 <- df %>% 
  group_by_at(vars(-gene_ID)) %>%
  filter(n() > 1)

^^^这不保留任何重复项,它删除了所有

test3 <- df %>% 
  group_by_at(vars(-gene_ID)) %>%
  duplicated(df)

^^^^ 此错误:“错误:参数‘incomparables != FALSE’尚未使用(尚未)”

最佳答案

我们可能需要

df[!duplicated(df[-1]), , drop = FALSE]

-输出

                                              gene_ID Gene_Identifier Category Length
1 Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113515.7           Wdfy1  Spliced   4551

或者用dplyr

library(dplyr)
df %>%
   filter(!duplicated(across(-gene_ID)))

-输出

                                                       gene_ID Gene_Identifier Category Length
1 Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113515.7           Wdfy1  Spliced   4551

数据

df <- structure(list(gene_ID = c("Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113515.7", 
"Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113514.7", 
"Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113513.7", 
"Wdfy1_chr1_79702262_79776143(-)_transcript=ENSMUST00000113512.7"
), Gene_Identifier = c("Wdfy1", "Wdfy1", "Wdfy1", "Wdfy1"), Category = c("Spliced", 
"Spliced", "Spliced", "Spliced"), Length = c(4551L, 4551L, 4551L, 
4551L)), class = "data.frame", row.names = c(NA, -4L))

关于当 R 中所有行的一列不同时,删除除一个重复行以外的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74719949/

相关文章:

r - R 图中的网格

r - R和python中for循环的区别

r - 在 R 中的数据框中转换为日期格式

Python 3.x - 使用来自另一个数据框的列名创建数据框

php - 将图像与文本合并

python - 自动维恩图文本渲染

python - 重命名 Pandas 中的选定列

r - 如何 "round"ggplot中的范围线

python - 从一个数据帧到另一个数据帧查找缺失值的正确方法

tfs - 在 TFS2008 中重新设置分支的父级