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
您的代码正在保存包含每个基因最大值的记录。
我正在使用从其他地方复制的以下 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
您的代码正在保存包含每个基因最大值的记录。