When you indicate you took out the top-coded values, I am wondering if you mean that you omitted the N/A values (here coded as 9999999) for HHINCOME, or if you’re referring to the maximum values for the components of personal income, INCTOT. You should be removing the former, but it isn’t clear to me that you would want to remove the latter top-coded values in this situation.
Other than some uncertainty around what you mean by top-coded values, your approach seems fine to me. It would be helpful to have more insight into the estimate you are getting and the source you are comparing it to for average household income. I’m wondering if you are calculating average values for HHINCOME but comparing them to estimates of median HHINCOME since median household incomes seem to be the more common metric in summary statistics. I’m finding an unweighted median household income of $65,000 for San Antonio-New Braunfels, TX, which is close to the $62,000 reported here. High incomes on the tail might be causing the weighted average to significantly diverge from the median. While I wouldn’t expect a large difference (e.g. $30,000), I also wouldn’t expect your estimates from the public use microdata sample (PUMS) available via IPUMS to match Census Bureau estimates exactly because the PUMS data are a sub-sample of the full ACS and have been top-coded.