नए across()
सिंटैक्स को संपादित करना शामिल है
यहाँ एक और tidyverse
उपाय है, उपयोग filter(across())
या पहले का filter_at
। लाभ यह है कि आप आसानी से एक से अधिक कॉलम तक बढ़ा सकते हैं ।
नीचे भी किसी भी कॉलम filter_all
में स्ट्रिंग को खोजने के लिए एक समाधान के साथ , उदाहरण के लिए, स्ट्रिंग "वी" की तलाश में।diamonds
library(tidyverse)
केवल एक कॉलम में स्ट्रिंग
# for only one column... extendable to more than one creating a column list in `across` or `vars`!
mtcars %>%
rownames_to_column("type") %>%
filter(across(type, ~ !grepl('Toyota|Mazda', .))) %>%
head()
#> type mpg cyl disp hp drat wt qsec vs am gear carb
#> 1 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
#> 2 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
#> 3 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
#> 4 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
#> 5 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
#> 6 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
उसी के लिए अब सिंटेड सिंटैक्स होगा:
mtcars %>%
rownames_to_column("type") %>%
filter_at(.vars= vars(type), all_vars(!grepl('Toyota|Mazda',.)))
सभी स्तंभों में स्ट्रिंग:
# remove all rows where any column contains 'V'
diamonds %>%
filter(across(everything(), ~ !grepl('V', .))) %>%
head
#> # A tibble: 6 x 10
#> carat cut color clarity depth table price x y z
#> <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
#> 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
#> 3 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
#> 4 0.3 Good J SI1 64 55 339 4.25 4.28 2.73
#> 5 0.22 Premium F SI1 60.4 61 342 3.88 3.84 2.33
#> 6 0.31 Ideal J SI2 62.2 54 344 4.35 4.37 2.71
उसी के लिए अब सिंटेड सिंटैक्स होगा:
diamonds %>%
filter_all(all_vars(!grepl('V', .))) %>%
head
मैंने निम्नलिखित के लिए एक वैकल्पिक विकल्प खोजने की कोशिश की, लेकिन मैं तुरंत एक अच्छा समाधान नहीं आया:
#get all rows where any column contains 'V'
diamonds %>%
filter_all(any_vars(grepl('V',.))) %>%
head
#> # A tibble: 6 x 10
#> carat cut color clarity depth table price x y z
#> <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
#> 1 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
#> 2 0.290 Premium I VS2 62.4 58 334 4.2 4.23 2.63
#> 3 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
#> 4 0.24 Very Good I VVS1 62.3 57 336 3.95 3.98 2.47
#> 5 0.26 Very Good H SI1 61.9 55 337 4.07 4.11 2.53
#> 6 0.22 Fair E VS2 65.1 61 337 3.87 3.78 2.49
अपडेट: इस उत्तर में उपयोगकर्ता पेट्र काजर के लिए धन्यवाद , यहां भी उपरोक्त के लिए एक दृष्टिकोण है:
diamonds %>%
filter(rowSums(across(everything(), ~grepl("V", .x))) > 0)
dplyr
, लेकिन?dplyr::filter
मैंfilter(df, !grepl("RTB",TrackingPixel))
शायद मदद की तरह कुछ देख रहा हूँ ?