Мы можем использовать rowSums
напрямую
df[rowSums(df[2:4] >= 0.5) > 0, ]
# Name Clust1 Clust2 Clust3
#2 BB 0.76946 0.03242 0.029358
#3 CC 0.10990 0.52171 0.283859
Или dplyr
версию с filter_at
и any_vars
library(dplyr)
df %>%
filter_at(vars(starts_with("Clust")), any_vars(. >= 0.5))
и в том, что касается исправления вашего В коде упоминается @thelatemail. Вы включаете столбец 1 в rowSums
, который является столбцом Name
, поэтому вы хотите поместить его в столбцы 2:4
. Также мы можем напрямую filter
вместо создания новой переменной с mutate
, поэтому должно работать следующее.
df %>% filter(rowSums(.[,c(2:4)] >= 0.5) > 0)
Мы также можем использовать версию apply
, которая была бы медленной для больших наборов данных
df[apply(df[2:4] >= 0.5, 1, any), ]
Я забыл бы об этом и просто поместил бы вращающийся круг!
Серьезно, хотя, для взятия идеи MrTelly далее существуют динамические представления управления, которые могут дать Вам среднее время выполнения для определенных запросов - возможно, который может получить Вас где-нибудь.
http://msdn.microsoft.com/en-us/library/ms188754.aspx
править: Я видел, что процент завершается в sp_whoisactive процедуре от Adam Machanic. Возможно, это - другое место для изучения. 2016 SQL имеет хранилище запроса, которое сохраняет информацию о кэше плана - замена для кэша плана dmv, который очищен на перезагрузке.
Я не знаю об инструменте, который сделает это автоматически, но существует несколько альтернатив. Повредите свой запрос в блоки...
select blah from table where IdRange between (1 and 100000)
select blah from table where IdRange between (100001 and 200000)
поскольку каждый sql завершается, так обновите индикатор выполнения.
Или Вы могли записать отрезок времени, потраченный для каждого из Ваших выборов, сохранить те значения, возможно, на на пользовательское основание. Затем используйте ту информацию для возврата длины индикатора выполнения.
Оба этих подхода довольно топорны, надо надеяться, кто-то знает лучший подход.
Конечно, Вы могли попытаться дешифровать план запросов и сделать решение на основе этого, но в коде, который будет тверд.