首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于所有其他字符列中的行字符串检测的变异条件列

基于所有其他字符列中的行字符串检测的变异条件列
EN

Stack Overflow用户
提问于 2021-02-23 18:09:34
回答 1查看 55关注 0票数 0

假设我有一个简单的tibble:

代码语言:javascript
复制
tribble(~a,~b,~c,
        1, "def", "abc",
        2, "def", "def")

我想用一个字符串是否存在于所有其他列的值来改变一个新的列"d“。在本例中,我要查找字符串"abc“。最终输出将如下所示:

代码语言:javascript
复制
tribble(~a,~b,~c,~d,
        1, "def", "abc", "present",
        2, "def", "def", "absent")

实际上,我的tibble有大约20列,其中可能有10列是字符,而我要查找的字符串更复杂,比如"[Aa]|[Cc]"。我相信pmap、case_when和str_detect都有一种简单的方法,但是根本就不能解决!

EN

回答 1

Stack Overflow用户

发布于 2021-02-23 18:13:13

在base R中使用rowSums

代码语言:javascript
复制
cols <- sapply(df, is.character)
df$d <- ifelse(rowSums(sapply(df[cols], grepl, pattern = 'a')) > 0, 
               'present', 'absent')

通过dplyr,我们可以将rowwisec_across一起使用:

代码语言:javascript
复制
library(dplyr)
library(stringr)

df %>%
  rowwise() %>%
  mutate(d = if(any(str_detect(c_across(where(is.character)), 'a'))) 
                'present' else 'absent')

#      a   b     c     d      
#  <dbl> <chr> <chr> <chr>  
#1     1 def   abc   present
#2     2 def   def   absent 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66331074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档