由于對正則運算式的了解不足,我不知道如何使用正則運算式在 r 中選擇特定列。
有一個簡短的例子。我有一個df包含很多變數的資料框。
a = c('1.age41_50', '2.age51_60', '3.age61_70', '4.age71_80',
'5.age1_20', '6.age21_30', '7.age31_40', '8.ageupwith65', '9.agelo65', '10.PM2_5')
df = matrix(ncol = 10, nrow = 1) %>% as_tibble()
colnames(df) = a
df
我想使用select()和matches()從dplyr包中選擇特定變數。正則運算式應遵循以下條件:
變數名不應同時包含
age和_。
在我看來,我首先搜索包含age和 的變數名稱,_然后反向選擇它但失敗了。比如這個:
df %>% select(!matches('age&_'))
最終結果應該是這樣的:
df_expected = df %>% select(`8.ageupwith65`, `9.agelo65`, `10.PM2_5`)
任何幫助將不勝感激!
uj5u.com熱心網友回復:
我們可能會使用
library(dplyr)
df %>%
select(-contains('age'), matches('age(?!.*_)', perl = TRUE))
# A tibble: 1 × 3
`10.PM2_5` `8.ageupwith65` `9.agelo65`
<lgl> <lgl> <lgl>
1 NA NA NA
uj5u.com熱心網友回復:
您可以使用
> df %>% select(!matches('age[0-9] _'))
# A tibble: 1 x 3
`8.ageupwith65` `9.agelo65` `10.PM2_5`
<lgl> <lgl> <lgl>
1 NA NA NA
此運算式匹配age一個或多個數字,然后匹配一個下劃線。最終結果因!運算子而顛倒。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/362079.html
下一篇:尋找RexEx來替換字串中的字串
