I’m analyzing 2017 ACS data at the person level using R. I read in the .dat file and ddi using the ipumsr package. In the PERWT code description (https://usa.ipums.org/usa-action/vari…), it says that the PERWT variable has two implied decimals. However, looking at the data, there are many observations below 100, which according to that description, would be less than a person. Is the way the data is loaded in using the ddi formatted so that the two implied decimals are removed? That seems unlikely since there are also no decimals in the data for this variable either. It doesn’t make sense, though, that an observation of one person could be weighted less than 1. Thanks!

1-year ACS weights, when read properly, are typically in the range of about 1 to about 2000, with a mean of about 100. If you have weights of about 1, then you divided by 100 one extra time.

The mean of PERWT for my analysis is 102.1, median 80. The minimum is 1 and the maximum is 2401. I did not configure the weights in any way, just read in the .dat file and ddi using the ipumsr package as mentioned.

Logically, I can see that these weights should be correct because there are only 3,190,040 observations, while the US population in 2017 was roughly 325 million. However, the “code” description section for the link I referenced above seems to have an error in saying that there are two implied decimals.

There are in fact 2 implied decimals in the fixed-width extract data files, but the ipumsr package automatically divides the values for you.

As you have noted, in the 2017 ACS sample, the minimum value of PERWT is 1 and the max is 2401