簡體   English   中英

根據行值選擇列

[英]Selecting colums based on row values

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

數據框看起來像這樣,但有更多列:

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

我只想 select 包含值“bingo”的列,例如

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

預期的 output:

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

任何幫助將不勝感激!

select-helpers ,即starts_with/ends_with/contains/matches正在將列名與select進行匹配。 如果我們需要匹配列中的值,請在select中使用where並創建一個邏輯條件,即'bingo' %in%. 哪里. 是單個列的值,這將返回單個 TRUE/FALSE,因為%in%的 lhs 是長度為 1 的元素。

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

或者另一個選項是any

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

您可以使用以下代碼:

library(dplyr)
library(stringr)

df %>%
  select(where(~ any(str_detect(.x, "bingo"))))

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM