2016-05-20 3 views
0

А имеют несколько CSV-файла, как это:Объединение объектов зоопарка, используя do.call в R

,timestamp,AirTemperature_House 
    1,2013-09-01 00:00:00,8.22 
    2,2013-09-01 01:00:00,6.53 
    3,2013-09-01 02:00:00,6.67 
    4,2013-09-01 03:00:00,5.58 
    5,2013-09-01 04:00:00,4.16 
    6,2013-09-01 05:00:00,4.76 
    7,2013-09-01 06:00:00,5.06 
    8,2013-09-01 07:00:00,5.16 
    9,2013-09-01 08:00:00,6.83 
    10,2013-09-01 09:00:00,8.59 
    11,2013-09-01 10:00:00,10.99 
    12,2013-09-01 11:00:00,11.08 

Я сгруппировал их в список объектов зоопарка, используя следующий код:

raw_data<-list.files(path = "./AWS_Data_STU/Air_temp/",pattern="Air",full.names = T) 

data_stu<-lapply(raw_data,function(x){ 
    ss<-read.csv(x) 

    ss<-zoo(ss,order.by = ss$timestamp) 


}) 

я сделал список объектов зоопарка, которые все похожи на этот:

str(data_stu[[1]]) 

    ‘zoo’ series from 2013-09-01 00:00:00 to 2014-04-30 23:00:00 
     Data: num [1:5808] 8.22 6.53 6.67 5.58 4.16 4.76 5.06 5.16 6.83 8.59 ... 
     Index: Factor w/ 5808 levels "2013-09-01 00:00:00",..: 1 2 3 4 5 6 7 8 9 10 

...

Я хочу, чтобы объединить все мой список к кадру данных, как:

X1 x2 x3 X4 x5 x6 x7 
1 12.95 NA NA NA  
2 14.81 14.37 NA NA 12.78 NA 
3 15.02 15.11 NA NA 12.61 NA 
4 13.91 14.25 NA NA 11.89 NA 
5 12.34 13.96 NA NA 10.86 NA 
6 14.40 14.47 NA NA 10.40 NA 

Я использовал зовите функцию

do.call(merge.zoo,data_stu) 

    structure(c(7.66, 7.29, 7.34, 7.15, 6.76, 6.41, 6.25, 6.36, 6.78, 
    1                 NA 
    2                 NA 
    3                 NA 
    4                 NA 
    5                 NA 
    6                 NA 
    7                 NA 
    8      

, но он дал мне только объект NA.

Любые идеи?

+1

используйте 'dput()' для обмена данными. – mtoto

+0

Я сделал это в R, но я не могу найти, как поместить файл ascii на этот сайт. Извините, что я новый пользователь. –

+0

Используйте 'dput (head (data_stu [1: 4], 30))', затем скопируйте и вставьте результаты в свой вопрос. Результат уродливый, но позволяет другим взглянуть. – lmo

ответ

0

Проблема в том, что индекс всех объектов вашего зоопарка является фактором. Вам необходимо преобразовать их в POSIXct. Кроме того, вы не должны вызывать методы напрямую. I.e., вы должны позвонить merge вместо merge.zoo и передать метод обработки R.

Вы также можете использовать read.zoo, чтобы помочь с конверсией.

data_stu <- do.call(merge, lapply(raw_data, read.zoo, sep=",", header=TRUE, 
    FUN=as.POSIXct, colClasses=c("NULL", "character", "numeric"))) 
Смежные вопросы