[英]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.