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 将只包含苹果和香蕉列。
这可能吗?到目前为止我找到的所有答案都只能根据列名称选择列,但我想根据列中的单元格值进行选择。谢谢你!
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)