r dplyr ends_with多个字符串匹配 [英] r dplyr ends_with multiple string matches

查看:299
本文介绍了r dplyr ends_with多个字符串匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以使用dplyr :: select(ends_with)选择适合多种条件的列名称.考虑到我的列名,我想使用结尾于而不是包含或匹配项,因为我要选择的字符串与列名的末尾相关,但也可能出现在其他中间.例如,

Can I use dplyr::select(ends_with) to select column names that fit any of multiple conditions. Considering my column names, I want to use ends with instead of contains or matches, because the strings I want to select are relevant at the end of the column name, but may also appear in the middle in others. For instance,

df <- data.frame(a10 = 1:4,
             a11 = 5:8,
             a20 = 1:4,
             a12 = 5:8)

我想选择以1或2结尾的列,以便只包含a11和a12列. select(ends_with)是执行此操作的最佳方法吗?

I want to select columns that end with 1 or 2, to have only columns a11 and a12. Is select(ends_with) the best way to do this?

谢谢!

推荐答案

您也可以使用正则表达式执行此操作.我知道您最初不想使用匹配项,但是如果您使用字符串结尾"符号$,它实际上会很好地工作.用|分隔各种结尾.

You can also do this using regular expressions. I know you did not want to use matches initially, but it actually works quite well if you use the "end of string" symbol $. Separate your various endings with |.

df <- data.frame(a10 = 1:4,
                 a11 = 5:8,
                 a20 = 1:4,
                 a12 = 5:8)

df %>% select(matches('1$|2$'))
  a11 a12
1   5   5
2   6   6
3   7   7
4   8   8

如果您的示例比较复杂且列表很长,请将paste0collapse = '|'结合使用.

If you have a more complex example with a long list, use paste0 with collapse = '|'.

dff <- data.frame(a11 = 1:3,
                  a12 = 2:4,
                  a13 = 3:5,
                  a16 = 5:7,
                  my_cat = LETTERS[1:3],
                  my_dog = LETTERS[5:7],
                  my_snake = LETTERS[9:11])

my_cols <- paste0(c(1,2,6,'dog','cat'), 
                  '$', 
                  collapse = '|')

dff %>% select(matches(my_cols))

  a11 a12 a16 my_cat my_dog
1   1   2   5      A      E
2   2   3   6      B      F
3   3   4   7      C      G

这篇关于r dplyr ends_with多个字符串匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆