我們可以利用的regex
的功率和dplyr
的filter
功能。
假設你有一個filter
變量,n
元素,其中n
也列數的您定位df
數據幀組成。
例如::
filter <- c('democrat, 'y', 'y', NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)
會給作爲導致所有在投y
民主主義
載體將過濾載體中的相應列和NA
旨意取任何值中的每一個元素前兩個,其餘的都是。
filter <- c('republican', 'y', 'n', NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)
filter <- toString(filter) %>%
gsub(pattern = 'NA', x = ., replacement = '.+')
df %>%
unite(string, Class:V16, sep = ', ', remove = F) %>%
filter(grepl(x = string, pattern = filter)) %>%
select(-string)
# Class V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16
# 1 republican y n n y y n y y y n n y y y n y
# 2 republican y n y y y n y n y y n n y y n y
# 3 republican y n y y y y y y n y n y n y y y
# 4 republican y n y y y y y y n y y y n y y y
# 5 republican y n n n n n y y y y n n n y n y
我想用'包圍的eval您paste0(解析()'應該工作。 – Tensibai
更好的方法可能是用'(DF,{CLASS = '民主派' 和V1 == 'Y' 和V2 == 'n'})'它只會保存數據集名稱,但這是最安全的方式,如果您想要在數值列上過濾某個點作爲向量,那麼後面(作爲值源的向量)將會成爲問題不能混合類型 – Tensibai