Извлечь имя столбца в зависимости от конкретного значения в фрейме данных

У меня есть следующие данные:

my_data <- tribble(
  ~item1, ~item2,
  "car", "ferrari",
  "house", "3 bed",
  NA, "3"
)

Я пытаюсь извлечь имя столбца, в котором существует «дом».

Я пытался:

my_data %>%
mutate(across(everything(), ~str_detect(.x , "house")))

который возвращает:

# A tibble: 3 × 2
  item1 item2
  <lgl> <lgl>
1 FALSE FALSE
2 TRUE  FALSE
3 NA    FALSE

И здесь я застрял, пытаясь извлечь столбец «item1». Я пробовал использовать функцию any(), но она сжимает все это до TRUE.

Ищите решение dplyr/purrr, пожалуйста. Спасибо.

Редактировать: Нет необходимости рассматривать мой вопрос столь широко и просто закрыть его. Первый «похожий» вопрос не использует dplyr и подмножества данных, а это не то, что я спрашивал. И я ценю, что второй «похожий» действительно применяет ту же функцию, но не возвращает имя столбца в качестве символа, как я просил... т. е. я бы не знал, что вы можете подать заявку names сразу после этого. А еще идет дискуссия о том, нужен ли where, которую не обсуждает ни один из остальных вопросов.

Вам нужно только имя столбца или значения столбца?

Lucca Nielsen 16.04.2024 21:50

Пожалуйста, просто имя столбца, значения не нужны. Это связано с тем, что мы обнаружили особенность между различными версиями R, маркирующими столбцы как «X1» или «...1», поэтому мы находим способ идентифицировать имя столбца на основе того, как среда пользователя читает файл.

J K 16.04.2024 21:53
names(Filter(\(x) "house" %in% x, my_data)) в базе R
moodymudskipper 17.04.2024 11:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это:

result <- my_data %>%
  pivot_longer(everything(), 
               names_to = "column_name", 
               values_to = "value") %>%
  filter(value == "house") %>%
  pull(column_name)



#output
    print(result)
    [1] "item1"
Ответ принят как подходящий

Используя select(where()):

library(dplyr)

my_data %>%
  select(where(\(x) "house" %in% x)) %>%
  names()
# "item1"

К вашему сведению, where здесь не нужен, например. my_data %>% select(\(x) "house" %in% x) %>% names(), только при использовании сокращенной записи формулы ~

Andre Wildberg 16.04.2024 22:33

@AndreWildberg Раньше можно было напрямую передать функцию предиката в select. Но это было изменено. Я считаю, что это поддерживается для обратной совместимости, но совет — всегда передавать функцию предиката в where. Поскольку функция \(x) "house" %in% x является функцией-предикатом, ее следует заключить в where. Использует ли он собственную лямбду или использует rlang лямбда/из функций формулы.

Onyambu 17.04.2024 00:37

Другие вопросы по теме