小编CGP*_*CGP的帖子

Str_Detect 使用跨列检测多列

我想根据str_detect使用跨多个列的结果创建一个新列across

例如,在下面的测试数据中,我想在以“job”开头的列中搜索“No job”,如果在任何列中检测到该字符串,则返回 1,如果未检测到,则返回 0。

test_data <-  data.frame("job1" = c('Sales','Baker','Blacksmith','Brewer'), 
                         "job2" = c('Mailman','Jockey','Jobhunter',"No job"),
                         "id" = c("id_1", "id_2", "id_3", "id_4"))

# Output I'd like:

#         job1      job2   id no_job
#1      Sales   Mailman id_1      0
#2      Baker    Jockey id_2      0
#3 Blacksmith Jobhunter id_3      0
#4     Brewer    No job id_4      1

Run Code Online (Sandbox Code Playgroud)

我知道我可以unite以“job”开头的列,然后str_detect在新列上使用,如下所示:

test_data2 <- test_data %>%
    unite(col = "all_jobs", starts_with("job"), sep = ", ", remove = FALSE) %>%
    mutate(no_job = if_else(str_detect(all_jobs, "No job"), …
Run Code Online (Sandbox Code Playgroud)

r dplyr

4
推荐指数
1
解决办法
2712
查看次数

标签 统计

dplyr ×1

r ×1