Решение Base R с использованием ave
df[!with(df, ave(Time == 1 & BTC == 0, Simulation, FUN = any)), ]
# Simulation Time BTC
#4 2 1 23
#5 2 2 45
#6 2 3 55
, которое можно перевести на dplyr
(аналогично @ Wen-Ben)
library(dplyr)
df %>%
group_by(Simulation) %>%
filter(!any(Time == 1 & BTC == 0))
и для полноты data.table
перевод
library(data.table)
setDT(df)[, .SD[!any(Time == 1 & BTC == 0)], by = Simulation]
Другая опция Base R без какой-либо группировки
df[!with(df, Simulation %in% Simulation[Time == 1 & BTC == 0]),]