2014-07-16 2 views
1

난 정말 다음과 같은 문제에 대한 당신의 도움이 필요 객체 :분할 데이터 프레임은

나는 두 개의 데이터 프레임이 - ISIN 및 클러스터 정보를 유가 증권의 포트폴리오를 포함하는 하나입니다.

> dfInput 

      TICKER     CLUSTER     SECURITY.NAME 
1  LU0937588209    High Yield  Prime Capital Access SA SICAV- 
2  LU0694362343    High Yield  ECM CREDIT FUND SICAV - ECM Hi 
3  IE0030390896    High Yield  Putnam World Trust - Global Hi 
4  LU0575374342     EM Debt  Ashmore SICAV - Emerging Marke 
5  LU0493865678     EM Debt  Ashmore SICAV - Emerging Marke 
6  LU0972237696     EM Debt  Galloway Global Fixed Income F 
7  IE00B6TLWG59     ILS/CAT  GAM Star Fund PLC - Cat Bond F 
8  LU0816333396     ILS/CAT  LGT Lux I - Cat Bond Fund 
9  LU0879473352    L/S Credit  Merrill Lynch Investment Solut 
10 HINCFEF ID Equity    L/S Credit  Hedge Invest International Fun 
11  FR0011034800    L/S Credit  Schelcher Prince Opportunite E 
12 PIMCSEI ID Equity    L/S Credit  PIMCO Funds Global Investors S 
13  VTR US Equity     REITs  Ventas Inc 
14  HCP US Equity     REITs  HCP Inc 
15 VGSIX US Equity     REITs  Vanguard REIT Index Fund 
16  NLY US Equity     M REITs  Annaly Capital Management Inc 
17 CLNY US Equity     M REITs  Colony Financial Inc 
18 AGNC US Equity     M REITs  American Capital Agency Corp 
19  REM US Equity     M REITs  iShares Mortgage Real Estate C 
20  ES0130960018 Infrastructure Equities  Enagas SA 
21 SDRL US Equity Infrastructure Equities  Seadrill Ltd 
22  IGF US Equity Infrastructure Equities  iShares Global Infrastructure 
23  KMP US Equity      MLP  Kinder Morgan Energy Partners 
24  EPD US Equity      MLP  Enterprise Products Partners L 
25 MLPI US Equity      MLP  ETRACS Alerian MLP Infrastruct 
26 HTGC US Equity      BDC  Hercules Technology Growth Cap 
27 TCPC US Equity      BDC  TCP Capital Corp 
28 MAIN US Equity      BDC  Main Street Capital Corp 
29 BDCS US Equity      BDC  ETRACS Linked to the Wells Far 

다른 내가 XTS 객체 지금 분할 할 수 있습니다 어떻게 열 이름과 보안 이름이 증권의 수익률 (데이터를 엑셀 파일에서 오는)

> PortfolioR.xts 

       Ventas.Inc  HCP.Inc .... 
2011-01-03 0.0000000000 0.0000000000 
2011-01-04 -0.0117725362 -0.0056323067 
2011-01-05 -0.0081155489 0.0018809625 
2011-01-06 -0.0009479572 -0.0154202974 
2011-01-07 -0.0058974774 -0.0054674822 
2011-01-10 -0.0074691528 -0.0077050464 
2011-01-11 -0.0036591278 0.0052348928 
2011-01-12 0.0132249172 -0.0091097938 
2011-01-13 0.0015220703 0.0085600412 
2011-01-14 0.0058762372 -0.0038567541 
2011-01-17 0.0000000000 0.0000000000 
2011-01-18 0.0157513101 -0.0002760525 
2011-01-19 -0.0059712810 -0.0074823683 
2011-01-20 0.0013092679 0.0049944610 
2011-01-21 0.0013075560 -0.0055509440 
... 

의 여러 시계열을 포함 포트폴리오의 클러스터 정보를 기반으로합니까?

CLUSTER에 대해이 클러스터에 속한 유가 증권의 반납 기록을 포함하는 data.frame 또는 xts 개체가 있어야합니다.

이것이 가능합니까? 예를 들어

setNames(lapply(unique(dfInput$CLUSTER), function(x) { 
    PortfolioR[, which(dfInput$CLUSTER[match(colnames(PortfolioR), 
              dfInput$SECURITY.NAME)] == x)] 
}), unique(dfInput$CLUSTER)) 

:

+0

다른 사람이 도움을 줄 수 있도록 적절한 태그를 지정하십시오. 아무도 당신의 질문을 볼 수 없다면. –

+0

죄송합니다 ... stackoverflow 내 첫 번째 게시물 –

답변

1

여기 한 가지 방법입니다 ... 미리 감사

# Set up some fake data 
d1 <- data.frame(grp=sample(LETTERS[1:4], 10, replace=TRUE), 
       name=letters[1:10]) 

d1 

# grp name 
# 1 A a 
# 2 B b 
# 3 B c 
# 4 D d 
# 5 C e 
# 6 B f 
# 7 B g 
# 8 A h 
# 9 D i 
# 10 A j 

d2 <- matrix(round(runif(50), 2), ncol=10) 
colnames(d2) <- letters[1:10] 
library(xts) 
d2 <- xts(d2, seq.Date(as.Date('01-01-2011', '%d-%m-%Y'), 
         as.Date('5-01-2011', '%d-%m-%Y'), 1)) 

d2 

#    a b c d e f g h i j 
# 2011-01-01 0.51 0.41 0.69 0.87 0.37 0.86 0.47 0.68 0.64 0.73 
# 2011-01-02 0.72 0.92 0.53 0.55 0.62 0.54 0.75 0.64 0.04 0.72 
# 2011-01-03 0.34 0.50 0.92 0.23 0.59 0.09 0.78 0.53 0.26 0.27 
# 2011-01-04 0.52 0.47 0.49 0.25 0.18 0.07 0.65 0.13 0.46 0.74 
# 2011-01-05 0.10 0.87 0.10 0.48 0.58 0.72 0.96 0.71 0.78 0.80 

out <- setNames(sapply(unique(d1$grp), function(x) { 
    d2[, which(d1$grp[match(colnames(d2), d1$name)] == x)] 
}), unique(d1$grp)) 

out 

# $A 
#    a h j 
# 2011-01-01 0.51 0.68 0.73 
# 2011-01-02 0.72 0.64 0.72 
# 2011-01-03 0.34 0.53 0.27 
# 2011-01-04 0.52 0.13 0.74 
# 2011-01-05 0.10 0.71 0.80 
# 
# $B 
#    b c f g 
# 2011-01-01 0.41 0.69 0.86 0.47 
# 2011-01-02 0.92 0.53 0.54 0.75 
# 2011-01-03 0.50 0.92 0.09 0.78 
# 2011-01-04 0.47 0.49 0.07 0.65 
# 2011-01-05 0.87 0.10 0.72 0.96 
# 
# $C 
#    d i 
# 2011-01-01 0.87 0.64 
# 2011-01-02 0.55 0.04 
# 2011-01-03 0.23 0.26 
# 2011-01-04 0.25 0.46 
# 2011-01-05 0.48 0.78 
# 
# $D 
#    e 
# 2011-01-01 0.37 
# 2011-01-02 0.62 
# 2011-01-03 0.59 
# 2011-01-04 0.18 
# 2011-01-05 0.58 

당신은 xts 객체가 목록 요소를 (원하는 경우) 독립 실행 형 글로벌 환경에서 xts 개체를 사용할 수 있습니다 list2env :

list2env(out, globalenv()) 

이렇게하면 전역 환경에서 목록 요소와 동일한 이름을 가진 모든 개체를 덮어 씁니다 (예 : 위의 예에서 A, B, C 및 D).

+0

안녕하세요 jbaums, 그게 좋은 ... 고마워요! –

+0

@ Daniel_D :이 질문에 대한 답변이 있으면이 대답 옆에있는 체크 표시를 클릭하십시오. 그러면 다른 사람들은 귀하의 질문에 대한 답변을 알게 될 것입니다. –

+0

안녕 얘들 아,이 문제에 대한 새로운 질문이 있습니다. data.frames d1 & d2에 이중 항목이 있다고 가정하십시오. 즉, d1에 grpD & C의 문자 "a"가 있고 따라서 d2의 "a"에 대한 두 개의 시계열이 있다고 가정하십시오. 어떻게 해결할 수 있을까요? –