【问题标题】:Is it possible to select columns in r based on any value in the column?是否可以根据列中的任何值选择 r 中的列?
【发布时间】:2022-06-21 23:33:24
【问题描述】:

我想将我的 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

我只想选择列中任意位置为 9 的列,这样我的 df 将仅包含 apple 和banana 列。

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

【问题讨论】:

    标签: r select subset distinct-values


    【解决方案1】:

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

    library(dplyr)
    df %>% 
      select(where(~is.numeric(.x) && any(.x == 9)))
    

    -输出

     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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2016-02-23
      相关资源
      最近更新 更多