Ваша программа выглядит хорошо для меня, если данные действительно находятся в столбцах, которые использует ваш код.
Убедитесь, что вы не отступили от строк данных. Также убедитесь, что ваш редактор не заменил пробелы символами TAB. Убедитесь, что значения STATE и YEAR всегда имеют значение и что оно не содержит пробелов. Вы можете использовать .
, чтобы отметить пропущенные значения, даже для символьной переменной STATE. Вместо этого вы можете прочитать STATE и YEAR, используя столбцы, и тогда пропуски будут считаться отсутствующими. Нет необходимости использовать форматированный ввод для последней переменной, если вы добавите модификатор :
, тогда SAS будет использовать режим списка и отрегулировать ширину, используемую в информате, чтобы соответствовать ширине следующего значения в строке. Но опять же, если ACREAGE отсутствует, используйте .
, чтобы отметить это. Или добавьте оператор INFILE DATALINES TRUNCOVER;
перед оператором INPUT.
DATA nationalparks;
INPUT ParkName $ 1-21 State $ 23-30 Year 32-35 Acreage :COMMA.;
*---+----10---+----20---+----30---+----40---+----50;
DATALINES;
Yellowstone ID/MT/WY 1872 4,065,493
Everglades FL 1934 1,398,800
Yosemite CA 1864 760,91
Great Smoky Mountains NC/TN 1926 520,269
;
Результаты:
Obs ParkName State Year Acreage
1 Yellowstone ID/MT/WY 1872 4065493
2 Everglades FL 1934 1398800
3 Yosemite CA 1864 76091
4 Great Smoky Mountains NC/TN 1926 520269