Well, you can't accurately aggregate those results. To do so, you would need a replacement value for "<10%" and ">90%", and, whatever you do you know you will be wrong. And even if you have none of such values I doubt the numbers add up. For instance, on campaign level the number of missed impressions because of insufficient campaign budget is included. It's doubtful such numbers are also included on lower levels. But that is a discussion to be held outside this forum, as it's not related to API.
Anyway - the only solution is to download more reports, with different settings. In our case, we also have results segmented by date, and therefore we download aggregated by day, by month, and by quarter. Not nice but there is no other way. Although requested, we decided NOT to download per week or US-week, the latter goes from Sunday till Saturday. Sacrifices are needed here.
In your case I suggest to download by keyword AND group AND campaign AND account (four reports). And, if necessary, download these reports with and without segments device and network, bringing you to sixteen reports per account.
Further, you mentioned you are doing this because of the sunset of average position. You should realize impression share is a different metric.
Hope this helps.