是否可以根据列中的任何值选择 r 中的列?

Emi*_*ily 6 select r subset distinct-values

我想对 df 进行子集化,以仅包含任何行中包含特定值的列。

例如,如果我有:

year = c(1990,1991,1992,1993,1994,1995,1996,1997,1998,1999)
apple = c(1,4,6,8,9,9,2,4,7,4)
orange = c(7,1,5,5,2,1,7,1,3,8)
banana = c(9,9,4,8,1,3,6,7,5,9)
lemon = c(8,3,3,3,2,5,6,7,2,4)
df = data.frame(year,apple,orange,banana,lemon)

df
Run Code Online (Sandbox Code Playgroud)

我只想选择列中任意位置有 9 的列,这样我的 df 将只包含苹果和香蕉列。

这可能吗?到目前为止我找到的所有答案都只能根据列名称选择列,但我想根据列中的单元格值进行选择。谢谢你!

akr*_*run 5

select我们可以在inside中传递一个函数where- 检查该列是否为数字,如果是数字,则检查是否有any等于 9 的值。另外可以将 更改any(.x ==9)9 %in% .x

library(dplyr)
df %>% 
  select(where(~is.numeric(.x) && any(.x == 9)))
Run Code Online (Sandbox Code Playgroud)

-输出

 apple banana
1      1      9
2      4      9
3      6      4
4      8      8
5      9      1
6      9      3
7      2      6
8      4      7
9      7      5
10     4      9
Run Code Online (Sandbox Code Playgroud)