Первая условная проверка, что Pred и Trend находятся в одном направлении.
Вторая условная проверка, что Pred находится в пределах 5% от значений Trend.
Результатом является числогородов, в которых выполняются оба условия (при условии отсутствия повторяющихся названий городов).
sum(with(df, ((Pred>0) == (Trend>0)) & (abs((Trend-Pred)/Trend)<=0.05)))