簡體   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