First some baseline info. NC98 is an R+9 district according to the Civitas Partisan Index - meaning the Republican won the 2012 vote for Governor and Council of State races in the precincts that make up this district by 9 more points than the statewide margin. The CPI is calculated only in Presidential election years, so it is more applicable this year than it would have been in 2014. In 2014, Republican John Bradford beat Democrat Natasha Marcus by 10 points, 55% to 45%.
It is also important to note, this district is not gerrymandered to have a Republican win. North Mecklenburg is just a pretty solid Republican area. In 2014, Marcus won 3 of 12 precincts - 206 in Davidson plus 145 and 239 in Highland Creek. If anything this district could have been drawn to be much more Republican by not including 239/145 voters and including more from Huntersville.
In 2014 Marcus won big in the 3 precincts she did win, so we'll consider those precincts the Democrat voting base. The comparable Republican 3-precinct base would be precincts 133, 208, and 242. In 2014 the Dem base precincts gave Marcus 426 vote advantage over the Rep base precincts.
When comparing early vote totals from 2014 and 2016 the turnout in the Dem base was up 333% on average by precinct this year. The Rep base was up just 266%. This would indicate Campbell has bigger cushion this year in these base precincts going into election day. (The massive increases are driven by the much larger overall turnout in a Presidential year.)
In 2014 the cushion favoring the Dems in the "base" precints was totally overwhelmed by the fact those 3 precincts were the only ones the Dem candidate won. There are multiple other precints that favor the Republican almost as much as the ones included in the "base" precincts here, and this year they had bigger early vote % increases.
We will know by the end of the day if the same dynamic happens again this year.