2010-02-18 2 views
10

Я использую surveygizmo, который является удивительно мощным онлайн-представителем анкеты. Данные могут быть экспортированы как файл csv, но, увы, у него есть две строки [не одного] заголовка. Первая строка задает вопрос, а вторая строка содержит возможные ответы, которые мог бы проверить ответчик. Это кажется крайне ненадежным в мире чтения данных и записи, но кажется вполне нормальным в мире опроса. Как читать такой файл в R?Чтение в файлах с двумя строками заголовков

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

В простом опросе стажер, который помогал мне удалось преодолеть эту проблему с помощью следующего кода

#Read csv file with two rows of headers 
#Append the second row to the first row 
df <-read.csv(csvfile,skip=1,stringsAsFactors=FALSE) #Read csv without any header 
hl=readLines(csvfile, 2)   #Read the two header lines as char strings 
hl=strsplit(hl,',')     #Split headers up by commas 
colnames(df)=sub('_$','',paste(hl[[1]],hl[[2]],sep="")) #join second row to first row 

Однако, с более длительным обследования с большим количеством вопросов и вопросов быть больше (и, таким образом, заголовки более длинны) наш метод грубой силы выше не работает.

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

Ниже приведен пример файла csv с двумя строками заголовка. Третья и последняя строка - первая строка данных. Я изменил все, что касается частной медицинской информации. Заголовки очень долгое время, так как обзор gizmo использовал весь вопрос в качестве заголовка.

"","","","","","","","","","Inclusion Criteria I or my child is a patient with recurrent respiratory papillomatosis (RRP)How do you know that you or your child has RRP? Please check whatever is true.","","","Exclusion Criteria Do any of the following apply? Please put a check next to any condition that is present.In the unlikely event that one of the following conditions apply, then unfortunately we cannot enroll you in this study. You could stop or you could carry on telling us about yourself, whichever you prefer. ","","Confused or have questions?If you are confused about any items or if you want us to clarify something then here is the place that you can express yourself freely. Also, you can call us at (412) 567-7870 or at (888) 887-7729.You are encouraged to review the consent form. You do not have to sign it now but you will need to do so once we enroll you. ","Please tell us who you are - referring to you, the person completing the form. Different people feel differently about their privacy and about how they are contacted. We will do our utmost to protect your privacy. Please do not give us your e-mail address if you do not want us to use it. Remember that e-mail should be private but is not always so. The safest way to think about it is as if e-mail was similar to a post card. Please do not give us a telephone number you do not want us to contact you on.","","","","","","","","","","","Who are you? Are you the patient or a parent or someone else?","When was the person with RRP born?Enter the date as MM/DD/YYYY","Approximately when was RRP diagnosed? This can be very approximate. If you do not remember the date then please put down your best guess. We will use it to work out how old the patient was when he or she was diagnosed. Enter the date as MM/DD/YYYY.","Has the patient with RRP ever received Gardasil? Gardasil is a vaccine against HPV 6, 11, 16 and 18 that was approved by the Food and Drug Administration (FDA) for use in females to prevent gynecologic diseases. ","Please ignore this question. It is for our internal tracking. Are you?","gender","race","Has there been human contact? By e-mail or by telephone or by anything in which we discussed informed consent","What is the subject number?","Merck Research Laboratory Accession Number?","Second Merck Accession Number?","FedEx Tracking Number","Date Shipped Out","Date EMSI Notified" 
"Response ID","RespondantKey","Edit Link","IP","Date Started","Date Finished","Status","Linked From","Comments","histopathconfirm","surgeonseaid","other","cancer","none","","First Name","Last Name","Street Address","Apt/Suite/Office","City","State","Postal Code","Country","Email Address","Phone Number","Mobile Phone","","","","","","","","","","","","","","" 
"6990181","4099941","http://s-gtzd7-14166.sgizmo.com/?edit=6770181&cc=e246ecb7095b983xxxxx7ec0a9","1991.157.178.134","2009-04-30 07:57:24","2009-04-15 14:56:01","Submitted","","Spoke to her Thursday, 20 Apr 2009 20:26. No questions ready to go.09/11/2009 consent mailed..mrs accession number 304074333811wp, 01wp SFJB06123 Fedex tracking 865888887357 sent Tues April 29; called her Thurs, 10 May 2009 20:21 she will sign slip","histopathconfirm","surgeonseaid","","","none","","Jane","Doe","23 Hastings Rd","29th floor","Oranje","ny","27935","USA","[email protected]","728-850-7252","626-922-2239","Patient","02/21/1965","01/01/1976","No","Key Person","","","Yes","SFJB06123","304033385811wp","303334485801wp","865333807357","4/11/2007","4/11/2007" 
+2

Это будет полезно, если вы могли бы ссылку на файл образца и объяснить, что вы имеете в виду с помощью метода выше, не работает. –

+1

Я не вижу причины использования 'sub' в последней команде. Я бы использовал: colnames (df) = paste (hl [[1]], hl [[2]], sep = "_") –

+1

Я хотел бы просто вставить весь мой CSV-файл для вас, чтобы увидеть проблему. К сожалению, он загружен частной медицинской информацией, поэтому мне придется потратить немало времени на дезинфекцию файла. Возможно, я просто опубликую первые 3 строки файла csv и изменим первую строку данных. Можно ли прикрепить файлы в stackoverflow? – Farrel

ответ

4

Почему не просто read.csv чтения в строке первого заголовка (которые являются фактическими заголовками, как я понимаю ваш вопрос), то пропустите следующую строку:

read.csv(file, header=T, skip=1) 

В качестве альтернативы , если эта вторая строка заголовка начинается с индивидуального символа (не найденного в ваших данных), вы можете указать эту строку как строку комментария, передав символ, начинающийся с строки, как значение аргумента comment.char (если эта линия началась ж/«#», например, было бы) ::

read.csv(file, header=T, comment.char="#") 
+0

Нельзя пропустить вторую строку. Вторая строка иногда является заголовком. Для нескольких столбцов заголовок находится во второй строке. См. Данные, которые я редактировал в свой первоначальный вопрос. – Farrel

+0

Вниз, потому что этот ответ не соответствует критериям, указанным в вопросе. Он полностью пропускает одну из двух строк заголовка. –

+0

-1 Описание первого примера кода здесь неверно. Это пропустит первую строку данных и * затем начнет чтение. Следовательно, заголовок будет из строки 2. «skip» работает до того, как произойдет какое-либо чтение. Я думаю, что этот ответ нужно удалить, так как этот вопрос сейчас (почти) закрыт, и есть лучшие ответы (например, @ DWin's) в другом сообщении. –

0

На самом деле я думаю, что самый простой способ сделать это с помощью экспорта SurveyGizmo SPSS вместо. Экспорт данных в SPSS, а затем использовать аналогичную команду в R для:

read.spss (файл = «mydata.sav»)

Это должно на самом деле отлично работать для вас и привести описание всех данных в R как Что ж.

Прошу прощения за запутанный телефонный звонок, который у вас был вчера. Это правда, мы стараемся не возвращаться и исправлять старый, старый, старый CSV-экспорт. Однако мы не хотим поддерживать единый экспорт заголовков. В версии 3 активный актив «Быстрый экспорт» - это экспорт одного столбца и будет оставаться таким же - официально поддерживается.

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

В этом случае SPSS Export - это путь! Если у вас нет уровня плана, который дает вам этот параметр экспорта, просто отправьте его по электронной почте (или вызовите) и укажите на него. Они добавят экспорт в вашу учетную запись.

Приветствия,

-Christian Ванек
CTO & Соучредитель
SurveyGizmo

+0

Я попытался с помощью пакета чуждого доступа к команде read.spss Но, увы, я ударил ошибки > initialspss <-read.spss (файл = «20100222180259-InitialScreen.sav») Предупреждения Сообщения: В read.spss (file = "20100222180259-InitialScreen.sav"): 20100222180259-InitialScreen.sav: Неизвестный тип записи 7, подтип 14, встречающийся в системном файле Я попытался перейти к версии 3. Правильно ли я пришел к выводу, что я могу скопировать опрос в версия 3, но ее первоначально введенные данные остаются в версии 2, где нет быстрого экспорта. Пожалуйста, предоставьте мне какие-либо заблуждения. – Farrel

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