Я искал SO, пытаясь найти решение безрезультатно. Так вот оно. У меня есть кадр данных со многими столбцами, некоторые из которых являются численными и должны быть неотрицательными. Я хочу очистить данные, поскольку некоторые значения в этих числовых столбцах отрицательны. Теперь я могу извлечь имена столбцов этих столбцов с регулярным выражением. Но я не уверен, как реализовать фильтрацию строк на основе этих столбцов.
Чтобы привести пример, скажем:
library(dplyr)
df <- read.table(text =
"id sth1 tg1_num sth2 tg2_num others
1 dave 2 ca 35 new
2 tom 5 tn -3 old
3 jane -3 al 0 new
4 leroy 0 az 25 old
5 jerry 4 mi 55 old", header=TRUE)
pattern <- "_num$"
ind <- grep(pattern, colnames(df))
target_columns <- colnames(df)[ind]
df <- df %>% filter(target_columns >= 0) # it is wrong, but it what I want to do
Я хочу выйти из этой фильтрации следующим образом:
id sth1 tg1_num sth2 tg2_num others
1 dave 2 ca 35 new
4 leroy 0 az 25 old
5 jerry 4 mi 55 old
где строки нет. 2 и 3 отфильтровываются, потому что по меньшей мере один столбец в tg1_num и tg2_num для этих строк содержит отрицательные числа.