금융 센터에서 메시지를 삭제하는 재정적 문제로 작업 중입니다. data.table을 사용하고 있으며 성능과 취급이 매우 만족 스럽습니다.여러 변수의 행을 효율적으로 일치 - 열 제외
비록 나는 항상 data.table의 모든 힘을 향상시키고 사용하는 방법을 스스로에게 묻는다.
- 내 작업을 수행하기 위해이 효율적인 방법인가, 아니면 않는 존재 뭔가 더 'data.table'이
set.seed(1) DT <- data.table(SYM = c(rep("A", 10), rep("B", 12)), PRC = format(rlnorm(22, 2), digits = 2), VOL = rpois(22, 312), ID = c(seq(1000, 1009), seq(1004, 1015)), FLAG = c(rep("", 8), "R", "A", rep("", 4), "R", rep("", 7))) DT$PRC[9] <- DT$PRC[6] DT$PRC[7] <- DT$PRC[6] DT$VOL[9] <- DT$VOL[6] DT$VOL[7] <- DT$VOL[6] DT$PRC[15] <- DT$PRC[13] DT$VOL[15] <- DT$VOL[13] ## See the original dataset DT ## Set the key setkey(DT, "SYM", "PRC", "VOL", "FLAG") ## Get all rows, that match a row with FLAG == "R" on the given variables in the list DT[DT[FLAG == "R"][,list(SYM, PRC, VOL)]] ## Remove these rows from the dataset DT <- DT[!DT[FLAG == "R"][,list(SYM, PRC, VOL)]] ## See the modified data.table DT
내 질문은 지금 : 여기
내 작업의 예입니다 스타일? 키가 효율적으로 설정 되었습니까? - 일치시킬 변수가 3 개 (SYM, PRC, VOL) 일뿐만 아니라 배제와 같은 것이 있으면 작업을 수행하려면 어떻게해야합니까? (데이터를 사용할 수 있음을 알고 있습니다. 프레임 스타일이지만 data.table에 대한보다 우아한 방법이 있는지 알고 싶습니까?
- 마지막 명령의 복사 란 무엇입니까? remove row by reference의 스레드 다음에 복사하는 것이 유일한 방법이라고 생각합니다. 여러 가지 작업을 수행하는 경우 어떤 방식으로 복합 작업을 수행하고 각 작업을 복사하지 않아도됩니까?
하나는 데이터 임의 단순히 원하는 것을하지? 나는'rlnorm'을 본다. (나는 그것이 무엇인지는 모르지만). 상단에'set.seed (1)'(또는 다른 시드)를 써서 같은 페이지에 올 수 있습니까?당신은 꽤 많은 일을하고 있습니다 만, DT1 <- DT [! ...] 테이블의 두 가지 버전을 유지할 것입니다. 왜냐하면 메모리 제약 조건에 익숙하지 않기 때문입니다. – Frank
@Frank이 댓글 주셔서 감사합니다! 당신은 사실입니다! 그리고 내 데이터는 전혀 임의가 아닙니다 :) –