2014-12-02 2 views
2

Мы пытаемся прочитать в столбце csv, который имеет в основном значения формата 39,9%, но также имеет некоторые значения как 's'. Мы не считаем, что мы можем прочитать эту колонку в чистоте с информацией. Есть ли способ сделать это чисто или нам нужно сначала ввести его в качестве символьных строк?Чтение в столбце с символом и числом с знаком процента

+1

Сначала я создам набор данных STAGE (TEMP), импортирующий значение AS IS из файла CSV. Затем в моем конечном наборе данных выполняйте инструкции управления данными, которые позволяют мне либо избавиться от «S», либо дать ему значительную ценность. – Salva

ответ

4

Это зависит от того, что вы хотите иметь данные. Если значение «S» имеет значение «SKIP» или что-то в этом роде, где вы хотите, чтобы оно было отсутствующим значением и в противном случае получило числовой результат, вы можете сделать это двумя способами.

Прежде всего, вы можете прочитать его с помощью информации PERCENTw.d и включить ??, чтобы сообщить анализатору не беспокоиться о недействительных данных - автоматически его не хватает.

data test; 
    infile datalines truncover; 
    input x ??percent9.3; 
datalines; 
BLANK 
39.4% 
38.3% 
DUMMY 
S 
IDONTKNOW 
49.5% 
;;;; 
run; 

Здесь все нечисловые значения станут ..

Во-вторых, если у вас есть несколько разных значений символов, и они всегда являются одиночными символами алфавита, вы можете прочитать их как особые. SAS не просто имеет один недостающий/null, но 28; ., .A - .Z, и ._. Вы можете использовать оператор missing для определения отдельных букв на входе как отсутствующих.

missing s d r; *skip, don't know, refuse; 
data test; 
    infile datalines truncover; 
    input x percent9.3; 
datalines; 
37.5% 
38.3% 
S 
49.3% 
D 
R 
R 
18.4% 
;;;; 
run; 
missing; 

Данные покажут S, D, R в наборе данных, когда вы его откроете; эти значения не имеют значений и не будут использоваться в вычислениях для proc means и такие, но они различны. Вы можете использовать синтаксис типа if missing(x) then ..., чтобы определить, отсутствует ли x (if x=. не будет работать, поскольку ни одно из этих значений не является .). Это работает только с одиночными символами. Вы можете комбинировать его с методом ??, если хотите (тогда ничего не в операторе missing станет регулярным . отсутствует).

Вы можете очистить обработку этих букв как отсутствующую missing;, как показано выше, в противном случае она будет сохраняться для вашей сессии.

+0

Приобретено для упоминания заявления 'missing' - не знал об этом! – user667489

Смежные вопросы