2016-09-18 3 views
0

는 I이 데이터 세트 dput 가지고R 확산 데이터 프레임

structure(list(Account.Name = c("CMD", "CMD", "CMD", "CMD", "CMD", 
"CMD", "CMD", "CMD", "CMD", "CMD", "CMD", "CMD", "CMD", "CMD", 
"CMD", "CMD", "CMD", "CMD", "CMD", "CMD", "CMD", "CMD", "Colimbra", 
"Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", 
"Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", 
"Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", 
"Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", 
"Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", "Colimbra", 
"Colimbra"), Date.y = structure(c(47L, 38L, 39L, 46L, 29L, 30L, 
31L, 37L, 36L, 34L, 43L, 45L, 41L, 42L, 33L, 40L, 27L, 28L, 32L, 
35L, 44L, 26L, 9L, 24L, 17L, 23L, 18L, 6L, 8L, 5L, 12L, 10L, 
7L, 11L, 35L, 25L, 19L, 16L, 34L, 27L, 4L, 26L, 20L, 29L, 15L, 
33L, 32L, 30L, 14L, 22L, 31L, 13L, 21L, 28L), .Label = c("", 
"2012-12-01", "2013-01-01", "2013-02-01", "2013-03-01", "2013-04-01", 
"2013-05-01", "2013-06-01", "2013-07-01", "2013-08-01", "2013-09-01", 
"2013-10-01", "2013-11-01", "2013-12-01", "2014-01-01", "2014-02-01", 
"2014-03-01", "2014-04-01", "2014-05-01", "2014-06-01", "2014-07-01", 
"2014-08-01", "2014-09-01", "2014-10-01", "2014-11-01", "2014-12-01", 
"2015-01-01", "2015-02-01", "2015-03-01", "2015-04-01", "2015-05-01", 
"2015-06-01", "2015-07-01", "2015-08-01", "2015-09-01", "2015-10-01", 
"2015-11-01", "2015-12-01", "2016-01-01", "2016-02-01", "2016-03-01", 
"2016-04-01", "2016-05-01", "2016-06-01", "2016-07-01", "2016-08-01", 
"2016-09-01"), class = "factor"), EI = c(0.172413778757433, 0.283582069077747, 
0.304347804744803, 0.278195468486632, 0.675675653544559, 0.965738751378275, 
0.79789472055251, 0.571428546702807, 0.364238387240035, 0.333333310925928, 
0.333333310925928, 0.267175552791797, 0.30935249644739, 0.30935249644739, 
0.547169786306516, 0.342465730716834, 0.25581393431044, 0.593220290504169, 
0.529411739555941, 0.538461513372782, 0.333333310925928, 0.119266044513089, 
0.00689655157368212, 0.0932835783248028, 0.117967327490881, 0.111415832683409, 
0.0864661618980282, 0.0170648454887846, 0.0380999488912474, 0.00803673911715819, 
0.0500855092066307, 0.00942675138629104, 0.0201612894472413, 
0.0046082948309584, 0.00435339299151454, 0.144554447192982, 0.0830188645366324, 
0.0825861213183505, 0.0129474483080438, 0.0240963850193243, 0.00917431152659711, 
0.0215175530933231, 0.0953932023013541, 0.00917431172607524, 
0.0873239401148782, 0.00892174336861008, 0.018429689070739, 0.0352357312529589, 
0.0470588220329153, 0.059847657373831, 0.00588084875970071, 0.0479921625133198, 
0.229030327296333, 0.00613496919149197)), .Names = c("Account.Name", 
"Date.y", "EI"), row.names = c(69L, 70L, 71L, 72L, 73L, 74L, 
75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 86L, 87L, 
88L, 89L, 90L, 91L, 95L, 96L, 99L, 101L, 104L, 105L, 107L, 108L, 
109L, 110L, 111L, 113L, 114L, 116L, 117L, 118L, 119L, 120L, 121L, 
122L, 123L, 125L, 126L, 127L, 128L, 129L, 130L, 131L, 132L, 133L, 
134L), class = "data.frame") 

및 I는 각각의 행이 하나 Account.Name 될 것 같은 방법으로 (젖히) 확산이 필요하고, 각 열에 관련된 것 0_date (해당 계정에 대한 마지막 Date.y 날짜 값인 경우) 및 i_date (i가 끝에서부터 시작하여 계산되는 계정의 첫 번째 날짜 레코드 색인 인 경우)로 시작하는 열 이름을 가진 Date.y 열 . 예컨대 :

Account.Name date_0, DATE_1, 날짜 2 ... CMD는 0.333333311 date_0가 2016년 6월 1일 DATE_1에 대응 0.333333311 0.309352496

  • 는 2016년 5월 1일 날짜 2에 대응 2016-04-01 등등에 해당합니다 ... tidyr :: spread를 사용하려고했으나 열 이름이 원래 날짜 값에 할당되었고 상대 날짜 열 이름을 만들고 싶습니다 (0_date부터 계산). , 각 계정의 마지막 날짜까지 1_date) 감사드립니다.
+0

전체 예상 출력을 표시 할 수 있습니까? 당신이'lib (reshape2); dcast (df1, Account.Name ~ Date.y, value.var = "EI")' – akrun

+0

을 시도 했습니까? 예상되는 결과물에서 이해할 수없는 특정 것이 있습니까? – RNN

+2

미안하지만, 나는 dput 출력의 최소 및 최대 날짜가 ""2013-02-01 "및" "2016-09-01"'이기 때문에 원하는 것을 이해하지 못했습니다. 그래서'date_0'은 "2016-06-01"에 해당합니다. 또한 재현 가능한 예제를 사용하여 다른 게시물을 살펴본 경우 대부분은 다른 사람들이 명확하게 이해할 수 있도록 예상 출력을 제공했습니다 (아마도 수동으로 작성하여). – akrun

답변

0

하자 X "date_10"가 "날짜 2"에 비교 잘못된 순서를해야합니다 동안 나는 당신이 그 (것)들을 분류 할 것이다 믿기 때문에 나는 "date_0"형식을 사용하지 않은

library(data.table) 
library(lubridate) 
dt <- data.table(x) 
# date should not be factors 
dt[, Date.y := ymd(Date.y)] 
setorder(dt, Account.Name, -Date.y) 
dt[, col_index := 0:(.N-1L), by = Account.Name] 
dt_casted <- dcast(dt, Account.Name ~ col_index, value.var = "EI") 

주, 데이터 프레임 수 . 인덱스를 숫자로 유지하거나 패드 앞에 0을 넣는 것이 좋습니다.