Removing/collapsing R 中的重复行

Removing/collapsing duplicate rows in R

我正在使用从其他地方复制的以下 R 代码 (https://support.bioconductor.org/p/70133/)。似乎非常适合我希望做的事情(这是数据集中 remove/collapse 的重复项),但我不明白最后一行。我想知道重复 removed/collapsed 的依据是什么。有人评论说它是基于中值绝对偏差 (MAD),但我没有遵循这一点。谁能帮我理解一下,好吗?

 Probesets=paste("a",1:200,sep="")
 Genes=sample(letters,200,replace=T)
 Value=rnorm(200)
 X=data.frame(Probesets,Genes,Value)
 X=X[order(X$Value,decreasing=T),]
 Y=X[which(!duplicated(X$Genes)),]

您确定要删除那些 Genes 值重复的行吗?这至少是这段代码的作用:

Y=X[which(!duplicated(X$Genes)),]

因此,Y仅包含唯一的 Genes 值。如果你比较 nrow(Y)length(unique(X$Genes)) 你会发现结果是一样的:

nrow(Y); length(unique(X$Genes))
[1] 26
[1] 26

如果您想删除所有列中包含重复值的行,这可以说是重复行的定义,那么您可以这样做:

Y=X[!duplicated(X),]

要了解其工作原理,请考虑以下示例:

df <- data.frame(
  a = c(1,1,2,3),
  b = c(1,1,3,4)
)
df
  a b
1 1 1
2 1 1
3 2 3
4 3 4

df[!duplicated(df),]
  a b
1 1 1
3 2 3
4 3 4

您的代码正在保存包含每个基因最大值的记录。