Удаление / свертывание дублирующихся строк в R - PullRequest
0 голосов
/ 16 апреля 2020

Я использую следующий код R, который я скопировал из другого места (https://support.bioconductor.org/p/70133/). Кажется, отлично работает для того, что я надеюсь сделать (то есть удалить / свернуть дубликаты из набора данных), но я не понимаю последнюю строку. Я хотел бы знать, на каком основании дубликаты удаляются / свернуты. Было отмечено, что оно основано на среднем абсолютном отклонении (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)),]

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Ваш код хранит записи, содержащие максимальное значение на ген.

1 голос
/ 16 апреля 2020

Вы уверены, что хотите удалить те строки, в которых дублируются значения 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
...