2016-03-23 18 views
2

内の重複や価値観に基づいて行を削除します。ONLY私はValue列に重複値を削除したいR - 私は次のようなRでdata.frame持っている別の列

> 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 

を、しかし、 TN列に1行に「T」があり、もう1行に「N」がある場合

私は重複して遊んが、これは私がそれをコード化されてきた方法では動作しません:二つ以上の行がある場合は、行のように、

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までのうち、少なくとも1つはTNの列に「T」であり、1つが「N」であるため、これらの文字列をすべて削除します。

ここで私は

> outputtable 
    TN Value 
6 T  3 
7 T  3 
8 N  5 

をしたいの出力は、私は重複した行についての質問をたくさん発見し、複数の列に基づいて行を削除します。しかし、私はこのようなことをした人は見ませんでした。

+1

が注文事項をしていますか?または、複数の 'unique'値を持つ行を削除しようとしていますか?つまり、これはうまくいくのでしょうか?

(一意の(入力可能)$値)[as.character(文字列としての) inputtable $ Value)] <2'? –

+0

あなたの 'with'ステートメントは、私がそれを必要とするように正確に動作します。答えを作成して、これに 'ave'コマンドをどのように適用するのか説明してください。ありがとうございました!私はこれを次のように実装しました: 'outputtable < - inputtable [with(inputtable、a​​ve(int)(TN)、Value、FUN = function(x)length(ユニーク(x))))<2、]' –

答えて

2

あなたは試みることができる:

library(dplyr) 

inputtable %>% group_by(Value) %>% filter(!(n_distinct(TN) >= 2)) 
Source: local data frame [3 x 2] 
Groups: Value [2] 

     TN Value 
    (fctr) (dbl) 
1  T  3 
2  T  3 
3  N  5 
+1

'n()> = 2'ですか?そして、これはコードだけの答えです。 –

+0

@DavidArenburgこれは不要で削除できます:-) – DatamineR

関連する問題