2
두 개의 데이터 테이블에 많은 열이 있습니다. 열은 동일하지만 서로 다른 시점 (한 행은 2015 행이고 한 열은 오늘 행)입니다. 데이터 테이블의 구조는 대략이 같은 것입니다 :병합 후 같은 이름의 열 유지
library(data.table)
dt1 <- data.table(id = c("A", "B", "C"), i = c(2,4,6), a = c(1,2,3), w = c(2,3,4), f = c(2,3,5))
old_dt1 <- data.table(id = c("A", "B", "C"), i = c(1,2,6), a = c(1,1,1), w = c(2,1,2), f = c(1,3,1))
내가 ID로 그들과 합류하고 싶습니다하지만 같은 이름의 열이 서로 옆에 배치되어 있다고합니다. 불행하게도 (
> merge(dt1, old_dt1, by = "id", suffixes = c("", "-2015"))
id i a w f i-2015 a-2015 w-2015 f-2015
1: A 2 1 2 2 1 1 2 1
2: B 4 2 3 3 2 1 1 3
3: C 6 3 4 5 6 1 2 1
내가 수동으로 setcolorder
하여 데이터 테이블 순서를 변경할 수 있습니다 알고 있지만 나는 간단한 뭔가를 놓치고 경우 궁금 : 내 문제는 내가 (예상되는) 병합 할 때 나는 다음과 같은 결과를 얻을 수 있다는 것입니다 그 옵션을 선택하지 않습니다 그래서 열은 알파벳 순서에없는 ...) 은 내가 좀하고 싶습니다하면 다음과 같다 :
result <- merge(dt1, old_dt1, by = "id", suffixes = c("", "-2015"))
setcolorder(result, c(1,2,6,3,7,4,8,5,9))
> result
id i i-2015 a a-2015 w w-2015 f f-2015
1: A 2 1 1 1 2 2 2 1
2: B 4 2 2 1 3 1 3 3
3: C 6 6 3 1 4 2 5 1
와우는 빨랐습니다! 그래서 이것이 정확하게 이해된다면'setcolorder' 명령은 행렬 값을 열로 전달할 것입니다. 이것이 바로이 방법이 올바른 것입니까? – User2321
@ User2321'byrow = TRUE'가있는'matrix'가 키입니다.'matrix (names (result) [- 1], nrow = 2, byrow = TRUE') 출력을 체크하고 연결하면 기본적으로 열 방향 벡터로 바뀔 것입니다 – akrun
정말 인상적입니다, 고마워요! – User2321