dcast
큰 데이터 세트 (수백만 행)로 변환하려고합니다. 나는 도착 시간과 출발지에 대해 하나의 행을 가지고 있고, 출발 시간과 목적지에 대해서는 또 다른 행을 가지고있다. 두 경우 모두 단위를 식별하기 위해 id
이 있습니다. 그것은이 유사하게 나타납니다다중 변수를 사용하여 효율적으로 큰 데이터 세트를
id time movement origin dest
1 10/06/2011 15:54 ARR 15 15
1 10/06/2011 16:14 DEP 15 29
2 10/06/2011 17:59 ARR 73 73
2 10/06/2011 18:10 DEP 73 75
2 10/06/2011 21:10 ARR 75 75
2 10/06/2011 21:20 DEP 75 73
3 10/06/2011 17:14 ARR 17 17
3 10/06/2011 18:01 DEP 17 48
4 10/06/2011 17:14 ARR 49 49
4 10/06/2011 17:26 DEP 49 15
그래서, 쌍 (ARR
- DEP
)를 재 할당 싶습니다 (here로) 효율적으로이 작업을 수행. 매우 큰 데이터 세트이므로 for loop
은이 경우 작동하지 않습니다. 이상적인 출력 될 것
index unitid origin arr time dest dep time
1 1 15 10/06/2011 14:33 29 10/06/2011 19:24
2 2 73 10/06/2011 14:59 75 10/06/2011 17:23
3 2 75 10/06/2011 21:10 73 10/06/2011 23:40
데이터 : 데이터 집합이 예에서와 같이 구성되어있는 경우
이 df <- structure(list(time = structure(c(7L, 16L, 8L, 11L, 18L, 20L,
10L, 12L, 3L, 6L, 15L, 19L, 9L, 4L, 5L, 14L, 1L, 2L, 13L, 17L
), .Label = c("10/06/2011 09:08", "10/06/2011 10:54", "10/06/2011 11:38",
"10/06/2011 12:41", "10/06/2011 12:54", "10/06/2011 14:26", "10/06/2011 14:33",
"10/06/2011 14:59", "10/06/2011 17:12", "10/06/2011 17:14", "10/06/2011 17:23",
"10/06/2011 18:56", "10/06/2011 19:03", "10/06/2011 19:04", "10/06/2011 19:16",
"10/06/2011 19:24", "10/06/2011 20:12", "10/06/2011 21:10", "10/06/2011 22:28",
"10/06/2011 23:40"), class = "factor"), movement = structure(c(1L,
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 2L, 1L,
2L, 2L, 3L), .Label = c("ARR", "DEP", "ITZ"), class = "factor"),
origin = c(15L, 15L, 73L, 73L, 75L, 75L, 17L, 17L, 49L, 49L,
15L, 15L, 32L, 10L, 10L, 17L, 76L, 76L, 76L, 76L), dest = c(15L,
29L, 73L, 75L, 75L, 73L, 17L, 48L, 49L, 15L, 15L, 49L, 32L,
10L, 17L, 10L, 76L, 65L, 76L, 65L), id = c(1L, 1L, 2L, 2L,
2L, 2L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 6L, 6L, 6L, 7L, 7L, 8L,
8L)), .Names = c("time", "movement", "origin", "dest", "id"
), row.names = c(NA, -20L), class = "data.frame")
은 아마 당신이에서'dcast.data.table'을 시도 할 수 있었다 ([의 1.9.8 지점 "data.table"] https://github.com/Rdatatable/data.table/tree/1.9.8) (그러나 CRAN 버전이 아니기 때문에 상황이 바뀔 수도 있습니다.) – A5C1D2H2I1M1N2O1R2T1
안녕하세요 @AnandaMahto, 이 코드는 (@akron에 의해) dcast.data.table (setDT (df) [, c ('. id', 'Seq')] : = list (c '도착', '출발' id + Seq ~ .id, value.var = 'time')'그러나 원점과 원점을 더하고 싶으면 (예 : gl (.N, 2, .N))] tination 정보, 나는 그것을 모으는 법을 정말로 모른다. 그것이 매우 큰 데이터 세트 (수백만 줄)임을 염두에 두십시오. – user3507584
당신은 얼마나 많은 수백만 행을 다루고 있습니까? – Arun