根据数据框中的特定值提取列名称

问题描述 投票:0回答:2

我有以下数据:

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

我正在尝试提取其中存在“house”的列的名称

我已经尝试过:

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 解决方案。谢谢。

r dplyr purrr
2个回答
0
投票

您正在寻找

dplyr::cur_column
。必须与
across
一起使用:

mutate(my_data, across(starts_with("item"), \(x) paste0(x, " in ", cur_column())))

输出:

# A tibble: 3 × 2
  item1          item2           
  <chr>          <chr>           
1 car in item1   ferrari in item2
2 house in item1 3 bed in item2  
3 NA in item1    3 in item2  

0
投票

试试这个:

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



#output
    print(result)
    [1] "item1"
© www.soinside.com 2019 - 2024. All rights reserved.