Variabel kategorikal V1 dalam bingkai data D1 dapat memiliki nilai yang diwakili oleh huruf-huruf dari A hingga Z. Saya ingin membuat subset D2, yang mengecualikan beberapa nilai, katakanlah, B, N dan T. Pada dasarnya, saya ingin perintah yang lawan dari %in%
D2 = subset(D1, V1 %in% c('B','N',T'))
!(x %in% y)
). Kadang hidup bisa mudah ...Jawaban:
Anda dapat menggunakan
!
operator pada dasarnya membuat TRUE FALSE dan setiap FALSE TRUE. begitu:EDIT: Anda juga dapat membuat operator sendiri:
sumber
?"%in%"
) di mana operator baru dipanggil%w/o%
.?Negate
misalnya"%ni%" <- Negate("%in%")
subset(df, variable %ni% c("A", "B"))
, tetapi tidak ketika digunakan secara langsung, misalnyasubset(df, variable Negate("%in%") c("A", "B"))
%
. Untuk membuat operator, Anda harus menetapkan fungsi dengan dua operan ke nama yang dimulai dan diakhiri dengan%
.Bagaimana tentang:
sumber
Jika Anda melihat kode
%in%
maka Anda harus dapat menulis versi sebaliknya. saya menggunakan
Cara lain adalah:
sumber
Berikut ini adalah versi yang menggunakan
filter
didplyr
yang menerapkan teknik yang sama dengan jawaban yang diterima dengan meniadakan logika dengan!:sumber
Menggunakan
negate
daripurrr
juga melakukan trik dengan cepat dan rapi:Maka penggunaannya, misalnya,
sumber
Negate
yang melakukan hal yang sama. Satu-satunya perbedaan adalah bahwa panggilan purras_mapper
pada hal yang Anda lewati, saatNegate
panggilanmatch.fun
. rdocumentation.org/packages/purrr/versions/0.2.5/topics/… stat.ethz.ch/R-manual/R-devel/library/base/html/match.fun.htmlpurrr::compose()
adalah cara cepat lain untuk mendefinisikan ini untuk digunakan nanti, seperti pada:sumber
Solusi lain bisa menggunakan
setdiff
D2
adalah bagian yang Anda inginkan.sumber
Hmisc memiliki
%nin%
fungsi, yang seharusnya melakukan ini.https://www.rdocumentation.org/packages/Hmisc/versions/4.4-0/topics/%25nin%25
sumber
Saya pikir penggunaan yang paling jelas adalah adil
sumber
sumber
Untuk informasi lebih lanjut, Anda dapat merujuk ke: https://cran.r-project.org/web/packages/TSDT/TSDT.pdf
sumber
Bantuan untuk% dalam%,,
help("%in%")
termasuk, di bagian Contoh, definisi tidak dalam,"%w/o%" <- function(x, y) x[!x %in% y] #-- x without y
Mari kita coba:
kalau tidak
sumber