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