【发布时间】:2022-01-19 13:54:20
【问题描述】:
我有一个包含字符串“gear”的多列数据框:
mtcars_new <- mtcars %>%
dplyr::mutate(
gear_2 = gear*4,
gear_3 = gear*5)
> head(mtcars_new)
mpg cyl disp hp drat wt qsec vs am gear carb gear_2
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 16
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 16
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 16
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 12
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 12
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 12
gear_3
Mazda RX4 20
Mazda RX4 Wag 20
Datsun 710 20
Hornet 4 Drive 15
Hornet Sportabout 15
Valiant 15
我想过滤此 tibble 以删除标题中带有字符串“gear”的任何列中任何值为“20”的行。
谁能建议如何做到这一点?
例如。像
mtcars_new %>% dplyr::filter_at(contains("gear"), 20)
mtcars_new %>% dplyr::filter(vars("gear") == 20)
(但有些东西可行..)
【问题讨论】:
-
试试这个
mtcars_new[rowSums(mtcars_new == 20) == 0,]或dplyr,你可以做mtcars_new %>% filter(rowSums(. == 20) == 0) -
stackoverflow.com/a/65626523/1999873 因为有一个标签,这已经有一个答案,那里的许多答案都不适用,但我链接的那个(几乎和我的答案一样)
-
最垃圾的答案是
mtcars_new %>% filter(!if_any(contains('gear'), ~ .x==20))