Emparelhamento de arquivos

Caros usuários, Preciso emparelhar dados de dois arquivos "xts", por data, sendo que em cada um dos arquivos somente algumas datas são coincidentes. São essas que eu gostaria de emparelhadas. Alguém idéia como poderia fazer. Utilizando o código abaixo não tive sucesso: OS dois arquivos: Shanghai.xts e vale.xts ShVale=merge.xts(Shanghai.xts,vale.xts,all = FALSE,suffixes=NULL, join="outer",retside=TRUE,retclass="xts") ShVale = na.exclude(object=ShVale) o arquivo resultante (ShVale) tem não tem dados, embora existam datas coincidentes entre os dois arquivos originais. Edilson Floriano dos Santos

Edilson, veja se o exemplo ajuda..., require(xts) data(sample_matrix) xts1 <- as.xts(sample_matrix[1:30,]) xts2 <- as.xts(sample_matrix[15:45,]) merge.xts(xts1, xts2, join="inner") Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W] Em 6 de maio de 2015 20:14, Edilson Santos <edilson.floriano@gmail.com> escreveu:
Caros usuários, Preciso emparelhar dados de dois arquivos "xts", por data, sendo que em cada um dos arquivos somente algumas datas são coincidentes. São essas que eu gostaria de emparelhadas. Alguém idéia como poderia fazer. Utilizando o código abaixo não tive sucesso:
OS dois arquivos: Shanghai.xts e vale.xts
ShVale=merge.xts(Shanghai.xts,vale.xts,all = FALSE,suffixes=NULL, join="outer",retside=TRUE,retclass="xts") ShVale = na.exclude(object=ShVale)
o arquivo resultante (ShVale) tem não tem dados, embora existam datas coincidentes entre os dois arquivos originais.
Edilson Floriano dos Santos
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Éder, Agradeço a sua sugestão, mas não resolveu. a função str() retorna para cada arquivo o seguinte: str(Shanghai) An ‘xts’ object on 2011-01-04/2014-12-31 containing: Data: num [1:970, 1] 2853 2839 2824 2839 2792 ... - attr(*, "dimnames")=List of 2 ..$ : NULL ..$ : chr "Shanghai" Indexed by objects of class: [Date] TZ: UTC xts Attributes: NULL str(vale.xts) An ‘xts’ object on 2011-01-01/2011-02-18 containing: Data: chr [1:49, 1] " 168.94" " 184.98" " 54.74" " -36.45" " 174.35" " 158.20" ... - attr(*, "dimnames")=List of 2 ..$ : NULL ..$ : chr "vale" Indexed by objects of class: [POSIXct,POSIXt] TZ: xts Attributes: NULL Acredito que essas diferenças é que estão motivando a dificuldade na utilização do merge(). O arquivo Shanghai eu obtive de: Shanghai = Quandl("YAHOO/INDEX_SSEC",type="xts",start_date=dtini,end_date=dtfin) Já o arquivo vale.xts foi obtido de: vale5 = read.csv("C:/Users/Edilson/Documents/R/gap - vale5 2011-2014.csv",header = TRUE, sep =",",dec=".") td <- seq(as.Date(dtini),as.Date(dtfin),"days") vale.z <- zoo(x=vale5,order.by=td) vale.ts <- as.timeSeries(x=vale.z) vale.ts<-vale.ts[1:49,-1] vale.xts<-as.xts(x=vale.ts) vale.xts[is.na(vale.xts)]=0 Eu utilizou sempre: library("Quandl") library("timeSeries") library("zoo") library(xts) library(quantmod) library(car) library(FinTS) library(nortest) library(fpp) library(fPortfolio) library(PerformanceAnalytics) Agradeço antecipadamente. Edilson Floriano dos Santos Em 7 de maio de 2015 11:11, Éder Comunello <comunello.eder@gmail.com> escreveu:
Edilson, veja se o exemplo ajuda...,
require(xts) data(sample_matrix) xts1 <- as.xts(sample_matrix[1:30,]) xts2 <- as.xts(sample_matrix[15:45,]) merge.xts(xts1, xts2, join="inner")
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
Em 6 de maio de 2015 20:14, Edilson Santos <edilson.floriano@gmail.com> escreveu:
Caros usuários, Preciso emparelhar dados de dois arquivos "xts", por data, sendo que em cada um dos arquivos somente algumas datas são coincidentes. São essas que eu gostaria de emparelhadas. Alguém idéia como poderia fazer. Utilizando o código abaixo não tive sucesso:
OS dois arquivos: Shanghai.xts e vale.xts
ShVale=merge.xts(Shanghai.xts,vale.xts,all = FALSE,suffixes=NULL, join="outer",retside=TRUE,retclass="xts") ShVale = na.exclude(object=ShVale)
o arquivo resultante (ShVale) tem não tem dados, embora existam datas coincidentes entre os dois arquivos originais.
Edilson Floriano dos Santos
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Edilson

Tente padronizar o índice dos objetos, convertendo do formato Date pra POSIX, algo como: index(objeto) <- as.POSIXct(index(objeto), "America/Manaus") Utilize o timezone adequado pro seu caso... Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Éder, grato novamente por sua sugestão, mas não funcionou. O problema, me parece, está no fato de os dados de um arquivo está no formato "num" e no outro arquivo está no formato "chr". Vou pesquisar um pouco mais e tentar outras alternativas. Se você tiver outra sugestão, por favor, pode repassar que eu tento fazer. Antecipadamente, Edilson Floriano dos Santos Em 7 de maio de 2015 16:25, Éder Comunello <comunello.eder@gmail.com> escreveu:
Tente padronizar o índice dos objetos, convertendo do formato Date pra POSIX, algo como:
index(objeto) <- as.POSIXct(index(objeto), "America/Manaus")
Utilize o timezone adequado pro seu caso...
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Edilson

Edilson, boa tarde! O ideal é que você disponibilizasse uma amostra de seus dados pra testar. Mas pela saída do str() é quase certo que o problema está na incompatibilidade dos índices de Shanghai e vale.xts, pois um é Date e o outro POSIX. Os dois precisam ter o mesmo formato. Você pode tentar criar seu objeto "td" como POSIX ou mudar o padrão de index(vale.xts) pra Date. Um CMR reproduzindo o erro abaixo... ### <code r> require(xts) xts1 <-structure(c(50.0397819115463, 50.2304961977954, 50.420955209067, 50.3734680543285, 50.2443255196795, 50.1177772350145, 50.421876002125, 50.420955209067, 50.3734680543285, 50.2443255196795, 49.9504146442813, 50.2304961977954, 50.2641365663597, 50.2210338242788, 50.1112075487643, 50.1177772350145, 50.3976663383861, 50.3323571013133, 50.3345948961691, 50.1811210391819), .Dim = c(5L, 4L), .Dimnames = list(NULL, c("Open", "High", "Low", "Close")), index = structure(c(1167710400, 1167796800, 1167883200, 1167969600, 1168056000), tzone = "", tclass = c("POSIXct", "POSIXt")), .indexCLASS = c("POSIXct", "POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", class = c("xts", "zoo")) xts3 <- xts2 <- structure(c(50.420955209067, 50.3734680543285, 50.2443255196795, 50.1321122972067, 50.0355467742705, 50.420955209067, 50.3734680543285, 50.2443255196795, 50.2156114607262, 50.1036323973342, 50.2641365663597, 50.2210338242788, 50.1112075487643, 49.9918544993091, 49.9697097184701, 50.3323571013133, 50.3345948961691, 50.1811210391819, 49.9918544993091, 49.988063256042), .Dim = c(5L, 4L), .Dimnames = list(NULL, c("Open", "High", "Low", "Close")), index = structure(c(1167868800, 1167955200, 1168041600, 1168128000, 1168214400), tclass = "Date"), .indexCLASS = "Date", tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", class = c("xts", "zoo")) str(xts1); str(xts2) index(xts1) # [1] "2007-01-02 AMT" "2007-01-03 AMT" "2007-01-04 AMT" "2007-01-05 AMT" "2007-01-06 AMT" index(xts3) <- as.POSIXct(as.POSIXlt(index(xts2)), tz=Sys.timezone()); index(xts3) # [1] "2007-01-04 AMT" "2007-01-05 AMT" "2007-01-06 AMT" "2007-01-07 AMT" "2007-01-08 AMT" merge.xts(xts1, xts2, join="inner") # Open High Low Close Open.1 High.1 Low.1 Close.1 # 2007-01-04 50.42096 50.42096 50.26414 50.33236 50.42096 50.42096 50.26414 50.33236 # 2007-01-05 50.37347 50.37347 50.22103 50.33459 50.37347 50.37347 50.22103 50.33459 # 2007-01-06 50.24433 50.24433 50.11121 50.18112 50.24433 50.24433 50.11121 50.18112 ### </code> Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Éder, Grato mais uma vez. Esse final de semana talvez não consiga trabalhar no prblema, mas assim que puder lhe falo sobre o resultado da sua proposta. Um abraço. Edilson Floriano dos Santos Em 8 de maio de 2015 14:22, Éder Comunello <comunello.eder@gmail.com> escreveu:
Edilson, boa tarde!
O ideal é que você disponibilizasse uma amostra de seus dados pra testar. Mas pela saída do str() é quase certo que o problema está na incompatibilidade dos índices de Shanghai e vale.xts, pois um é Date e o outro POSIX. Os dois precisam ter o mesmo formato.
Você pode tentar criar seu objeto "td" como POSIX ou mudar o padrão de index(vale.xts) pra Date.
Um CMR reproduzindo o erro abaixo...
### <code r> require(xts)
xts1 <-structure(c(50.0397819115463, 50.2304961977954, 50.420955209067, 50.3734680543285, 50.2443255196795, 50.1177772350145, 50.421876002125, 50.420955209067, 50.3734680543285, 50.2443255196795, 49.9504146442813, 50.2304961977954, 50.2641365663597, 50.2210338242788, 50.1112075487643, 50.1177772350145, 50.3976663383861, 50.3323571013133, 50.3345948961691, 50.1811210391819), .Dim = c(5L, 4L), .Dimnames = list(NULL, c("Open", "High", "Low", "Close")), index = structure(c(1167710400, 1167796800, 1167883200, 1167969600, 1168056000), tzone = "", tclass = c("POSIXct", "POSIXt")), .indexCLASS = c("POSIXct", "POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", class = c("xts", "zoo"))
xts3 <- xts2 <- structure(c(50.420955209067, 50.3734680543285, 50.2443255196795, 50.1321122972067, 50.0355467742705, 50.420955209067, 50.3734680543285, 50.2443255196795, 50.2156114607262, 50.1036323973342, 50.2641365663597, 50.2210338242788, 50.1112075487643, 49.9918544993091, 49.9697097184701, 50.3323571013133, 50.3345948961691, 50.1811210391819, 49.9918544993091, 49.988063256042), .Dim = c(5L, 4L), .Dimnames = list(NULL, c("Open", "High", "Low", "Close")), index = structure(c(1167868800, 1167955200, 1168041600, 1168128000, 1168214400), tclass = "Date"), .indexCLASS = "Date", tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", class = c("xts", "zoo"))
str(xts1); str(xts2)
index(xts1) # [1] "2007-01-02 AMT" "2007-01-03 AMT" "2007-01-04 AMT" "2007-01-05 AMT" "2007-01-06 AMT"
index(xts3) <- as.POSIXct(as.POSIXlt(index(xts2)), tz=Sys.timezone()); index(xts3) # [1] "2007-01-04 AMT" "2007-01-05 AMT" "2007-01-06 AMT" "2007-01-07 AMT" "2007-01-08 AMT"
merge.xts(xts1, xts2, join="inner") # Open High Low Close Open.1 High.1 Low.1 Close.1 # 2007-01-04 50.42096 50.42096 50.26414 50.33236 50.42096 50.42096 50.26414 50.33236 # 2007-01-05 50.37347 50.37347 50.22103 50.33459 50.37347 50.37347 50.22103 50.33459 # 2007-01-06 50.24433 50.24433 50.11121 50.18112 50.24433 50.24433 50.11121 50.18112 ### </code>
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Edilson
participantes (2)
-
Edilson Santos
-
Éder Comunello