Belirli sütunları R'deki içeriklerine göre kaldırma/saklama

0

Soru

df: Gerçekte binlerce varyant ve kimlik var

     variant1 variant2 variant3 variant4
ID1   0/0         0/0      0/0     0
ID2   0/0         0/0      0/0     0
ID3   0/0         0/0      1/1     0
ID4   0/0         0/0      0/0     1
ID5   0/1         0/0      0/0     0

İstenen sonuç:

     variant1 variant2 variant3 variant4


ID3   0/0         0/0      1/1     0
ID4   0/0         0/0      0/0     1
ID5   0/1         0/0      0/0     0

Satırları yalnızca 0/1, 1/1 veya 1 varsa tutmak istiyorum.

Denedim dt[grepl(0/1", df),] her yineleme için ama işe yaramıyor gibi görünüyor.

Bir temel R veya veri var mı?bunu yapmanın masa yolu mu?

data.table r subset
2021-11-22 17:04:15
1

En iyi cevabı

1

Kullanabiliriz if_any -den dplyr

library(dplyr)
dt %>%
    filter(if_any(everything(), ~ . %in% c("0/1", "1/1", "1")))

-çıktı

    variant1 variant2 variant3 variant4
ID3      0/0      0/0      1/1        0
ID4      0/0      0/0      0/0        1
ID5      0/1      0/0      0/0        0

Veya kullanarak base R

dt[ Reduce(`|`, lapply(dt, `%in%`, c("0/1", "1/1", "1"))),]

-çıktı

    variant1 variant2 variant3 variant4
ID3      0/0      0/0      1/1        0
ID4      0/0      0/0      0/0        1
ID5      0/1      0/0      0/0        0

Aynı seçenek şu durumlarda da kullanılabilir: data.table

library(data.table)
setDT(dt)[dt[, Reduce(`|`, lapply(.SD, `%in%`, c("0/1", "1/1", "1")))]]

veri

dt <- structure(list(variant1 = c("0/0", "0/0", "0/0", "0/0", "0/1"
), variant2 = c("0/0", "0/0", "0/0", "0/0", "0/0"), variant3 = c("0/0", 
"0/0", "1/1", "0/0", "0/0"), variant4 = c("0", "0", "0", "1", 
"0")), row.names = c("ID1", "ID2", "ID3", "ID4", "ID5"), class = "data.frame")
2021-11-22 17:16:10

Cevap vermek için zaman ayırdığınız için teşekkürler, bu gerçekten iyi çalıştı. Reduce'daki " / " işlevi ne anlama geliyor? Verilerde". SD " yazıyor.tablo, tüm tablo için geçerli mi?
tacrolimus

@takrolimus | VEYA operatörüdür. Elementwise VEYA liste çıktısından vektörün her birinde olup olmadığını kontrol eder. lapply ve tek bir DOĞRU/YANLIŞ vektörü döndürür. yani, aynı konumda tek bir DOĞRU varsa, DOĞRU veya başka bir YANLIŞ döndürür. 2) .SD - veri alt kümesi.masa. Eğer bir şey belirtmezsek .SDcols, tüm sütunları alacak
akrun

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................