У меня есть data.frame в R, который выглядит следующим образом:R - Удаление строк на основе дубликата и значений в другом столбце
> inputtable <- data.frame(TN = c("T","N","T","N","N","T","T","N"),
+ Value = c(1,1,2,2,2,3,3,5))
> inputtable
TN Value
1 T 1
2 N 1
3 T 2
4 N 2
5 N 2
6 T 3
7 T 3
8 N 5
Я хочу, чтобы удалить значения, которые дублируются в Value
колонки, но ТОЛЬКО если одна строка имеет «Т», а другая имеет «N» в столбце TN
.
Я играл с дублированным, но это не работает так, как я закодировал:
TNoverlaps.duprem <- TNoverlaps[ !(duplicated(TNoverlaps$Barcode) & ("T" %in% TNoverlaps$TN & "N" %in% TNoverlaps$TN)), ]
и
TNoverlaps.duprem <- TNoverlaps[ duplicated(TNoverlaps$Barcode) & !duplicated(TNoverlaps$Barcode, TNoverlaps$TN), ]
Если есть более чем в два ряда, а в строках 3-5 выше, я хочу удалить все из них, потому что по крайней мере один является «Т», а один - «N» в столбце TN
.
Вот результат я хочу
> outputtable
TN Value
6 T 3
7 T 3
8 N 5
Я нашел много вопросов о дублированных строк и удаление строк на основе нескольких столбцов. Но я не видел того, что делал что-то подобное.
ли вопросы порядка? Или вы просто хотите удалить строки, которые имеют более одного уникального значения? Другими словами, будет ли это работать? 'with (inputtable, ave (as.integer (TN), Value, FUN = function (x) length (unique (x)))) <2' Или' table (unique (inputtable) $ Value) [as.character (inputtable $ Value)] <2'? –
Ваш оператор 'with' работает точно так, как мне это нужно. Можете ли вы создать ответ и объяснить, как вы применяете команду 'ave' к этому? Спасибо! Я реализовал это с помощью: 'outputtable <- inputtable [с (inputtable, ave (as.integer (TN), Value, FUN = function (x) length (unique (x)))) <2,]' –