2016-03-09 2 views
0

У меня есть 1000 файлов .dta в папке:Чтение и запись несколько CSV в цикле

C:/Folder/data1.dta 
C:/Folder/data2.dta 
C:/Folder/data" ".dta 
C:/Folder/data1000.dta 

Я СВАО применять программу приписывать мои данные 1000, и сохранить эти вмененные данные в новую папку.

C:/Folder2/data_new1.dta 
C:/Folder2/data_new2.dta 
C:/Folder2/data_new" ".dta 
C:/Folder2/data_new1000.dta 

Я построил сложную программу с пакетом LEA, чтобы реализовать завершение с неотрицательной матричной факторизацией. Это работает так:

data1 <- read.dta("C:/Folder/data1.dta") 

***********My program****** 

write.dta (data1, "C:/Folder/data_new1.dta") 

Я ищу метод для его цикла для моих 1000 наборов данных. С Stata, я могу сделать так:

forvalues i=1/1000 { 

data`i' <- read.dta("C:/Folder/data`i'.dta") 

***********My program****** 

write.dta (data`i', "C:/Folder/data_new`i'.dta") 

ответ

1

Используйте список:

f <- dir(pattern = "dta") 
dat <- lapply(f, read.dta) 
# do stuff to every data.frame 
for (i in seq_along(dat)) { 
    write.dta(dat[[i]], paste0("data_new", i, ".dta")) 
} 
+1

«делать вещи для каждого кадра данных» и write.dta оба могли быть включены в 'lapply', с нет необходимости фактически сохранять список для объекта. – eipi10

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