r - 根据行值选择列

标签 r dplyr

我想根据行中的值对列进行子集化(如果可能,使用 dplyr 友好的方法)。

数据框看起来像这样但是有更多的列:

df <- 
data.frame(a = c("a","b","c","bingo"),
b = c("d","e","a","b"),
c = c("bingo","bingo","a","e"))

我只想选择包含值“bingo”的列 像

df %>% select(columns_that_contain("bingo"))

预期输出:

     a     c
1     a bingo
2     b bingo
3     c     a
4 bingo     e

任何帮助将不胜感激!

最佳答案

select-helpersstarts_with/ends_with/contains/matches 正在对列名进行匹配以选择 列。如果我们需要匹配列中的值,请在 select 中使用 where 并创建一个逻辑条件,即 'bingo' %in% 。 where . 是单个列的值,这将返回单个 TRUE/FALSE,因为 %in% 的 lhs 是长度为 1 的元素。

library(dplyr)
df %>% 
      select(where(~ 'bingo' %in% .))

或者另一个选项是any

df %>%
    select(where(~ any(. == 'bingo')))

关于r - 根据行值选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67306279/

相关文章:

r - 在ggvis图表下方添加水平离散图例

r - 如何通过R中的两个因素总结一个数字变量

r - 来自 sparklyr 的非默认方案(数据库)中的访问表

按组用第一个观察值替换所有值

r - 在summary()中使用变量作为参数

R Shiny : Output warning messages to UI

r - 使用 geom_line() 连接选定 NA 上的点

r - 删除 R data.table 的行

r - 输入变量列表,无需在它们之间手动添加逗号

r - dplyr 变异 : create column using first occurrence of another column