СТРУКТУРА ДАННЫХ: У меня есть набор данных, который можно считать файлом Excel или CSV. Он имеет следующие типы переменных: даты, время, числовые переменные и то, что должно быть числовыми переменными, которые некорректно имеют символы, прикрепленные к числу - например. -0.011 * и 0.023954029324) (скобки в конце находятся в ячейке) - из-за ошибки в программе, которая написала файл. Между каждой записью также есть пустые строки, и это нереально удалить все из них, поскольку у меня есть сотни файлов для управления.Импорт данных с недопустимыми символами в числовых столбцах
DATA ISSUE: Мы определили, что некоторые значения верны до символа (т.е. -0.011 верен, пока звездочка удалена), в то время как другие значения, такие как 0.023954029324), являются совершенно неправильными и должны быть сделано отсутствует. Пожалуйста, не комментируйте эту проблему, поскольку она вне моего контроля, и на этом этапе все, что я могу сделать, - это управлять данными до тех пор, пока ошибка не будет исправлена, а значения символов перестанут записываться в файлы.
ПРОБЛЕМА SAS:
1) Если я использую PROC ИМПОРТ с файлом Excel, SAS использует первые восемь строк (20 для файла CSV), чтобы определить, является ли переменная числом или символом. Если звездочка скобок не встречается в первых 20 строках, SAS говорит, что переменная является числовой, а затем пропускает любые последующие ячейки с символьными значениями. Это не нормально в случае звездочек, потому что я хочу сохранить числовую часть значения и удалить звездочку на более позднем этапе данных. Импорт файлов Excel с помощью PROC IMPORT не позволяет использовать параметр GUESSINGROWS (как и файлы CSV, см. Ниже). Изменить: Кроме того, параметр MIXED = YES НЕ работает (см. Комментарии ниже - по-прежнему необходимо изменить количество строк, используемых SAS, что для меня означает, что этот параметр делает ... что?).
2) Если я использую PROC IMPORT с CSV-файлом, я могу указать GUESSINGROWS = 32767, и я действительно взволнован, потому что тогда он определяет переменные со звездочками, которые являются символами и поддерживают звездочки. Тем не менее, это очень странно уже не определяет переменные с круглыми скобками как символ (как это было бы при импорте файла Excel, если скобка была в первых 20 строках), но вместо этого удаляет символ и дополнительно округляет значение до ближайший целое число (0.1435980234 становится 0, 1.82149023843 становится 2, и т.п.). Это слишком грубое округление - мне нужно поддерживать десятичные знаки. И, кроме того, скобки теперь исчезли, поэтому я не могу убрать соответствующие ячейки. Я не знаю, есть ли способ сделать SAS не круглым и/или поддерживать круглые скобки. Для меня это противоречивое поведение - почему в этом случае символ звездочки, но не круглый скот, считается символом? Кроме того, когда я прочитал в файле Excel w/PROC IMPORT (как описано в (1)), он может cope w/круглые скобки (если они появляются в первых 20 строках) - другое несоответствие.
3) Если я использую INFILE, ну, я получаю сообщение об ошибке с каждой переменной, которую я пытаюсь прочитать, - эта процедура слишком чувствительна и нестабильна в отношении того, как изменяются данные (и я должен закодировать рабочий процесс, вокруг для пустых строк данных).
ULTIMATE GOAL (обратите внимание будет запускаться автоматически в макросе этого код, если это имеет значение):
1) Считайте переменную дату как дата
2) Читать переменное время как раз
3) Уметь идентифицировать переменную w/characters, присутствующую в любой ячейке этой переменной (даже после 20 строк) в качестве символьной переменной, и поддерживать значения в ячейках (т. Е. Не округлять/удалять символ). Это может быть путем априорного указания SAS, чтобы позволить определенному набору переменных быть символом (я изменю их на числовые, после того как я избавлюсь от символов/сделаю ячейки неактивными), или SAS самостоятельно идентифицирует переменные w/characters.
Кроме того, если у вас возникли проблемы с импортом CSV, я рекомендую перейти к журналу и посмотреть, что импорт выбрал для формата переменной; что, по крайней мере, скажет вам, где это происходит. – Joe
Спасибо за информацию, Джо. 1) Я видел, как некоторые источники говорят, что восемь, а некоторые говорят 20 - я не был уверен, было ли это иначе, в зависимости от типа файла. 2) Да, журнал показывает, что он идентифицирует переменную с круглыми скобками как запятую12. тип. Проблема в том, что не всегда одни и те же переменные имеют символы, поэтому определение информатики для каждого из них не является идеальным. Тем не менее, я считаю, что лучшим решением является выход из журнала и принудительное изменение всех переменных, которые могут иметь характерные значения, а затем изменить их все на числовые после того, как поврежденные ячейки были обработаны w /. – Meg
Продолжение сверху: 3) Я написал, что мне нужна дата/время, чтобы уточнить, какие типы переменных необходимо поддерживать, что может быть актуальным, если у кого-то есть предложение, основанное на INFILE, например. 4) Спасибо! – Meg