2014-11-26 2 views
0

У меня есть 66 кадров данных, которые мне нужно преобразовать в столбец «Date» «as.Date». Я не знаю, как это сделать сразу. Я буду так:Преобразование as.Date: сразу несколько кадров данных

dat2003q1$Date<-as.Date(as.character(dat2003q1),format="%m/%d/%Y") 
dat2003q2$Date<-as.Date(as.character(dat2003q2),format="%m/%d/%Y") 
dat2003q3$Date<-as.Date(as.character(dat2003q3),format="%m/%d/%Y") 

и так далее ...

Существует способ сделать это для всех кадров данных одновременно? Ive нашел решение для нескольких столбцов в одном фрейме данных, но не так.

Tks

+2

У вас есть 66 кадров данных в вашем рабочем пространстве? вы должны хранить их в списке и работать с применяемыми функциями – rawr

+0

Да, у меня 66 кадров данных в моей рабочей области. По твоим комментариям, кажется, это необычная вещь, но у меня не так много опыта в Р. Ткс. –

ответ

1

Попробуйте

lst <- lapply(mget(ls(pattern='^dat2003q\\d+')), function(x) { 
        x$Date <- as.Date(as.character(x$Date), format='%m/%d/%Y') 
         x}) 

Если вы хотите обновить datasets в глобальной среде с этим изменением (что не то, что рекомендуемое, как вы можете сделать все необходимые операции в списке и более поздних версий вы можете сохранить наборы данных с помощью read.table)

list2env(lst, envir=.GlobalEnv) 
+0

То, что именно я ищу. Tks. Я новичок в R, поэтому я не понимаю, зачем мне работать со списком вместо наборов данных. И извините за мой плохой английский. –

+0

@Jorge Dias Причина в том, что вам нужно создать 66 объектов. Я предполагаю, что вы прочитали все эти наборы данных индивидуально. Затем, если вы хотите выполнить некоторые вычисления во всех наборах данных одновременно (как описано выше), вы должны использовать либо цикл 'for', либо использовать' lapply', помещая их в список. Таким образом, вместо создания всех этих объектов вы могли бы прочитать их lst <- lapply (list.files(), function (x) read.table (x, header = TRUE, sep = '')) ', если файлы все находятся в рабочем каталоге. – akrun

+0

Еще раз спасибо. Ваши предположения правильные. Теперь я понимаю, почему я должен работать со списками. Я понял, когда использовал функцию lst <- lapply (list.files(), function (x) read.csv (x, header = TRUE), список не предполагал имена для data.frames. Есть команда для исправления что после этого Im использует lst <- lapply (lst, function (x) {x $ Date <- as.Date (as.character (x $ Date), format = '% m /% d /% Y') x }) и lst2 <- lapply (lst, function (x) {x <-as.xts (x [, - 1], order.by = x $ Date)}) Я полагаю, что могу использовать ту же логику, не так ли? Tks. –

0

составляет список со всем кадром данных в моем рабочем каталоге, так

csv_names = list.files(pattern="*.csv") 
my_data <- list() 
for (i in seq_along(csv_names)) { 
my_data[[i]] <- read.csv(file = csv_names[i], sep = ";") 
} 

так, у меня есть список с именем my_data с этих CSV файлов или данных кадра его правильно? @akrun, мне нужен формат as.date для столбца DATE моих кадров данных в списке. Вы знаете или знаете, как это сделать?