2014-10-01 2 views
2

RJSDMX 패키지를 사용하여 유럽 중앙 은행 (European Central Bank) 다운로드에서 반환 된 목록 요소에 액세스하는 방법에 대한 정보를 찾거나 이해하는 데 문제가 있습니다. 모든 유럽 국가의 시계열을 다운로드 중이며 각 시리즈의 하나의 동물원 객체에 이러한 데이터 세트를 병합하는 작업을 자동화해야합니다. 내가 사용하는 다운로드 및 반환 된 데이터의 구조의 일반적인 아이디어에 대한 코드는 다음과 같습니다RJSDMX에서 반환 된 목록 목록에서 동물원 개체에 액세스 ECB 데이터 다운로드

require(RJSDMX) 
total_loans_m <- getSDMX('ECB','BSI.M.BE|BG|CZ|DK|DE|EE|IE|EL|ES|FR|HR|IT|CY|LV|LT|LU|HU|MT|NL|AT|PL|PT|RO|SI|FI|SE|UK|IS|NO|CH|ME|MK|RS|TR|BA.N.A.A20.A.1.U2.1000.Z01.E') 
> class(total_loans_m) 
[1] "list" 
>str(total_loans_m[1]) 
List of 1 
$ BSI.M.AT.N.A.A20.A.1.U2.1000.Z01.E:‘zooreg’ series from Sep 1997 to Aug 2014 
    Data: atomic [1:204] 83066 81829 82413 81271 83366 ... 
    ..- attr(*, "STATUS")= chr [1:204] "A" "A" "A" "A" ... 
    ..- attr(*, "FREQ")= chr "M" 
    ..- attr(*, "REF_AREA")= chr "AT" 
    ..- attr(*, "ADJUSTMENT")= chr "N" 
    ..- attr(*, "BS_REP_SECTOR")= chr "A" 
    ..- attr(*, "BS_ITEM")= chr "A20" 
    ..- attr(*, "MATURITY_ORIG")= chr "A" 
    ..- attr(*, "DATA_TYPE")= chr "1" 
    ..- attr(*, "COUNT_AREA")= chr "U2" 
    ..- attr(*, "BS_COUNT_SECTOR")= chr "1000" 
    ..- attr(*, "CURRENCY_TRANS")= chr "Z01" 
    ..- attr(*, "BS_SUFFIX")= chr "E" 
    ..- attr(*, "DECIMALS")= chr "'0'" 
    ..- attr(*, "UNIT")= chr "'EUR'" 
    ..- attr(*, "UNIT_MULT")= chr "'6'" 
    ..- attr(*, "COLLECTION")= chr "'E'" 
    ..- attr(*, "TITLE_COMPL")= chr "'Austria, Outstanding amounts at the end of the period (stocks), MFIs excluding ESCB reporting sector - Loans, Total maturity, "| __truncated__ 
    Index: Class 'yearmon' num [1:204] 1998 1998 1998 1998 1998 ... 
    Frequency: 12 
> names(total_loans_m) 
[1] "BSI.M.AT.N.A.A20.A.1.U2.1000.Z01.E" 
[2] "BSI.M.BE.N.A.A20.A.1.U2.1000.Z01.E" 
[3] "BSI.M.BG.N.A.A20.A.1.U2.1000.Z01.E" 
[4] "BSI.M.CY.N.A.A20.A.1.U2.1000.Z01.E" 
[5] "BSI.M.CZ.N.A.A20.A.1.U2.1000.Z01.E" 
[6] "BSI.M.DE.N.A.A20.A.1.U2.1000.Z01.E" 
[7] "BSI.M.EE.N.A.A20.A.1.U2.1000.Z01.E" 
[8] "BSI.M.ES.N.A.A20.A.1.U2.1000.Z01.E" 
[9] "BSI.M.FI.N.A.A20.A.1.U2.1000.Z01.E" 
[10] "BSI.M.FR.N.A.A20.A.1.U2.1000.Z01.E" 
[11] "BSI.M.HR.N.A.A20.A.1.U2.1000.Z01.E" 
[12] "BSI.M.HU.N.A.A20.A.1.U2.1000.Z01.E" 
[13] "BSI.M.IE.N.A.A20.A.1.U2.1000.Z01.E" 
[14] "BSI.M.IT.N.A.A20.A.1.U2.1000.Z01.E" 
[15] "BSI.M.LT.N.A.A20.A.1.U2.1000.Z01.E" 
[16] "BSI.M.LU.N.A.A20.A.1.U2.1000.Z01.E" 
[17] "BSI.M.LV.N.A.A20.A.1.U2.1000.Z01.E" 
[18] "BSI.M.MT.N.A.A20.A.1.U2.1000.Z01.E" 
[19] "BSI.M.NL.N.A.A20.A.1.U2.1000.Z01.E" 
[20] "BSI.M.PL.N.A.A20.A.1.U2.1000.Z01.E" 
[21] "BSI.M.PT.N.A.A20.A.1.U2.1000.Z01.E" 
[22] "BSI.M.RO.N.A.A20.A.1.U2.1000.Z01.E" 
[23] "BSI.M.SE.N.A.A20.A.1.U2.1000.Z01.E" 
[24] "BSI.M.SI.N.A.A20.A.1.U2.1000.Z01.E" 

그래서이의 RJSDMX은 각각 동물원 객체를 갖는, 24 개 목록 목록 (각 국가의 하나)를 반환 names() 호출에 표시된 긴 문자열로 표시됩니다. 예를 들어 total_loans_m$BSI.M.AT.N.A.A20.A.1.U2.1000.Z01.E과 같이 호출하여 동물원 개체에 액세스 할 수 있지만 긴 문자열 대신 국가 이름별로 각 열의 이름을 바꾸려면 목록에서 해당 요소를 호출하는 방법에 대한 정보를 찾을 수 없습니다. for 루프가 일종의 24 개의리스트를 호출하고 'zooreg'시리즈에 액세스하여 다른 24 개국과 병합하고 "REF_AREA"국가 코드를 컬럼 이름으로 추가하기를 원했습니다. zooreg 객체. 누구든지 각각의 요소가 저장되는 방법을 결정하는 방법을 설명 할 수 있습니다. 목록 내의 복잡한 목록이나 정보에 액세스하는 방법에 대한 정보를 찾을 수 없거나 적절한 용어를 모릅니다. 올바른 검색. 감사.

+0

목록에서 어떤 목록을 참조하는지 알 수 없습니다. 'total_loans_m '은 24 개의 요소를 포함하는 목록입니다. 이 요소들 각각은'zoo' 객체입니다 (다른리스트는 아닙니다). 당신이 찾고있는리스트, 시리즈의 가치, 이름, ...에 있어야 할 것은 무엇입니까? – javlacalle

+0

안녕하세요 [user3701213] (http://stackoverflow.com/users/3701213/user3701213), SDMX 문서, 데이터 또는 다른 문서 유형 (예 : 코드 목록/데이터 구조)을 읽어야하는 경우 rsdmx 패키지를 사용해 볼 수도 있습니다. [CRAN] (http://cran.r-project.org/web/packages/rsdmx/)에서 볼 수 있습니다. 또한 [rsdmx documentation] (https://github.com/opensdmx/rsdmx/wiki)에서 ECB를 비롯한 여러 데이터 소스에 대한 예제를 확인할 수 있습니다. 차이점은''data.frame''으로 데이터 셋 전체를 읽을 수 있다는 것입니다. 일부 속성 (예 : 국가의 경우와 같이 하나의 열에서 처리됨) 희망이 도움이 – eblondel

답변

0

시리즈를 병합하고 국가 별 이름으로 열을 지정한다고 말합니다. 이건 어때?

x <- do.call("cbind", total_loans_m) 
names(x) <- substr(names(total_loans_m), 7, 8) 
head(x) 
#    AT  BE BG CY CZ  DE EE  ES  FI  FR HR HU 
# Sep 1997 83066 139478 NA NA NA 943811.6 NA 199701 8186.883 822222 NA NA 
# Oct 1997 81829 144261 NA NA NA 966783.4 NA 199076 10144.759 832853 NA NA 
# Nov 1997 82413 144122 NA NA NA 1002784.5 NA 199520 9730.008 847246 NA NA 
# Dec 1997 81271 123517 NA NA NA 1005940.2 NA 209386 9860.690 849077 NA NA 
# Jan 1998 83366 129742 NA NA NA 1004540.3 NA 209291 9152.450 881863 NA NA 
# Feb 1998 83932 133066 NA NA NA 1010344.0 NA 211616 10289.569 880293 NA NA 
#    IE  IT LT  LU LV MT  NL PL PT RO SE SI 
# Sep 1997 31905.98 187778 NA 220047.4 NA NA 62951 NA 38476 NA NA NA 
# Oct 1997 33190.95 190900 NA 229895.1 NA NA 66195 NA 40482 NA NA NA 
# Nov 1997 35180.63 190191 NA 224347.8 NA NA 72708 NA 39459 NA NA NA 
# Dec 1997 37405.22 205422 NA 216277.9 NA NA 129542 NA 41510 NA NA NA 
# Jan 1998 38221.66 199245 NA 241180.3 NA NA 142657 NA 39441 NA NA NA 
# Feb 1998 38102.30 204014 NA 241650.3 NA NA 137135 NA 40164 NA NA NA 
+0

그 작품. 나는 cbind가 누락되었거나 데이터 구조가 제대로 작동하지 않을 것이라고 생각했습니다. do.call을 지적 해 주셔서 감사합니다. 전에도 보지 못했습니다. – Bluebird