R -

2016-03-23 26 views
2

Ben benziyor R bir data.frame sahip başka sütunda yinelenen ve değerlere dayalı satırları sil aşağıdadı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 

ben ama SADECE, Value sütunda çoğaltılamaz değerleri kaldırmak istiyorum Bir satır "T" ve diğerinin TN sütununda "N" varsa.

Ben çoğaltılmış etrafında oynadı ama bunu bu şekilde kodlanmış ettik şekilde çalışmıyor:

TNoverlaps.duprem <- TNoverlaps[ !(duplicated(TNoverlaps$Barcode) & ("T" %in% TNoverlaps$TN & "N" %in% TNoverlaps$TN)), ] 

ve ikiden fazla satır, satır gibi varsa

TNoverlaps.duprem <- TNoverlaps[ duplicated(TNoverlaps$Barcode) & !duplicated(TNoverlaps$Barcode, TNoverlaps$TN), ] 

3-5, yukarıdakilerin tümünü kaldırmak istiyorum, çünkü en az biri "T", diğeri ise TN sütununda "N" dir.

İşte ben çoğaltılamaz satırlar hakkında sorular bol ve birden çok sütun dayalı çıkarmadan satırları bulundu

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

istediğiniz çıktı bu. Ama böyle bir şey yapan birini görmedim.

+1

sipariş meseleleri mu? YA DA sadece birden fazla 'benzersiz' değeri olan satırları mı silmek istiyorsunuz? Başka bir deyişle, bu işe yarar mı? 'ile (giriş, ave (as.integer (TN), Değer, FUN = fonksiyon (x) uzunluğu (benzersiz (x)))) <2' Veya' tablosu (benzersiz (giriş) $ Değer) [as.character (giriş değeri $ Value)] <2'? –

+0

'with' ifadeniz tam olarak buna ihtiyacım var. Lütfen bir cevap oluşturabilir ve buna “ave” komutunu nasıl uyguladığınızı açıklayabilir misiniz? Teşekkür ederim! Bunu aşağıdakilerle uyguladım: 'outputtable <- inputtable [ile (inputtable, ave (as.integer (TN), Value, FUN = fonksiyon (x) uzunluğu (unique (x)))) <2,]' –

cevap

2

Sen deneyebilirsiniz:

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

nedir? 'n()> = 2' için? Ve bu bir kod sadece cevap. –

+0

@DavidArenburg Bu gereksiz ve :-) kaldırılabilir – DatamineR