2014-10-25 2 views
0

У меня есть файл размером 100 МБ в Stata, содержащий 260 наблюдений за компанию. У меня в моей выборке около 4000 компаний. Таким образом, данные временных рядов складываются один за другим для каждой компании, одна компания за другой в одном файле. Я хочу разбить этот файл на более мелкие файлы, один файл для одной компании. Я пробовал использовать цикл forval в Stata, и все, что я получаю, это счетчик «i» является недопустимым именем. Петля я использую следующим образом:Разделение большого файла в Stata на файлы меньшего размера

forval i=1/4000 { 
    use "file.dta" if internalid=='i',clear 
    save "newfile_'i'" 
    } 
+1

Кажется, что вы используете неправильные котировки открытия с вашим местным. См. Пример в моем ответе (сегодня я не могу получить правильные цитаты для показа в комментариях). –

+2

Звучит неплохо для меня. Теперь вам нужно перебрать еще 4000 файлов. Естественно, может быть какая-то особая причина, о которой вы не заявляете. –

ответ

1

Ваши данные в длинной форме и для многих видов анализа, это, как правило, лучший способ иметь его. Однако, если вам действительно нужно разбить его, вот пример:

clear 
set more off 

*----- example data ----- 

input /// 
id x 
1 38 
1 57 
1 43 
2 35 
2 98 
end 

tempfile main 
save `main' 

*----- what you want ---- 

forval i = 1/2 { 
    use `main' if id == `i', clear 
    save id`i' 
} 

Это Stata FAQ.

+0

Привет, Роберто, спасибо за подробный цикл forval. Тем не менее, я использовал тот же FAQ по Stata, на который вы указали ссылку. И я получаю недопустимое имя «i» как ошибку. Это могут быть кавычки для местного населения, о которых вы упомянули. Фактически вместо «file.dta» я использую вместо этого «C: \ Users \ Windows User \ Desktop \ Data \ timeseries_2000.dta», который указывает местоположение файла, к которому нужно получить доступ для разделения. Что вы предлагаете использовать? Большое спасибо за вашу помощь. Veronica – Veronica

+0

Вероника, я точно не знаю, какое предложение вы хотите. Если вы настаиваете на разделении файла на 4 000 других файлов, код должен сделать это. Мое единственное предложение было бы использовать '/' вместо '' '' '' 'как разделители каталогов (см. [Остерегайтесь обратной косой черты назад) (http://www.stata-journal.com/article.html?article=pr0042) Ник Кокс). Как уже было сказано, другое предложение состоит в том, чтобы не разделить файл, но удобство этого зависит от того, что вы планируете делать. Файл не слишком велик. –

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