繁体   English   中英

Select R 中有条件的多列

[英]Select multiple columns conditionally in R

我有一个名为db0的数据集,如下所示:

db0 <- data.frame(
  qty_day1_41 = c(7,    5,  2,  7,  8,  2,  6,  3,  3),
  qty_day1_42 = c(3,    8,  6,  9,  1,  9,  3,  7,  8),
  qty_day1_141 = c(4,   2,  2,  8,  7,  3,  9,  5,  8),
  qty_day1_142 = c(2,   10, 10, 5,  8,  5,  7,  1,  8),
  qty_day2_41 = c(7,    5,  2,  7,  8,  2,  6,  3,  3),
  qty_day2_42 = c(3,    8,  6,  9,  1,  9,  3,  7,  8),
  qty_day2_141 = c(4,   2,  2,  8,  7,  3,  9,  5,  8),
  qty_day2_142 = c(2,   10, 10, 5,  8,  5,  7,  1,  8)
  )

db0

  qty_day1_41 qty_day1_42 qty_day1_141 qty_day1_142 qty_day2_41 qty_day2_42
1           7           3            4            2           7           3
2           5           8            2           10           5           8
3           2           6            2           10           2           6
4           7           9            8            5           7           9
5           8           1            7            8           8           1
6           2           9            3            5           2           9
7           6           3            9            7           6           3
8           3           7            5            1           3           7
9           3           8            8            8           3           8
  qty_day2_141 qty_day2_142
1            4            2
2            2           10
3            2           10
4            8            5
5            7            8
6            3            5
7            9            7
8            5            1
9            8            8

这些列表示项目 k(k=41、42、...180)在第 n 天(n=1,2...14)消耗的数量 (qty)。 我想要 select只有项目 41 和 42 而不是 141 和 142 我试过这段代码:

library(tidyverse) 
db0 %>% select(matches("41|42"))

但是,这也会选择项目 141 和 142。

  qty_day1_41 qty_day1_42 qty_day1_141 qty_day1_142 qty_day2_41 qty_day2_42
1           7           3            4            2           7           3
2           5           8            2           10           5           8
3           2           6            2           10           2           6
4           7           9            8            5           7           9
5           8           1            7            8           8           1
6           2           9            3            5           2           9
7           6           3            9            7           6           3
8           3           7            5            1           3           7
9           3           8            8            8           3           8
  qty_day2_141 qty_day2_142
1            4            2
2            2           10
3            2           10
4            8            5
5            7            8
6            3            5
7            9            7
8            5            1
9            8            8

我如何 select 名称中仅包含数字 41 和 42 的列(使用dplyr或其他方式)?

我们可以在数字前用_指定模式,用$指定字符串的结尾

library(dplyr)
db0 %>% 
    select(matches("_(41|42)$"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM