나는 dt
과 dt1
data.table
을가집니다.다른 data.table을 사용하여 data.table을 서브 세트
dt<-data.table(id=c(rep(2, 3), rep(4, 2)), year=c(2005:2007, 2005:2006), event=c(1,0,0,0,1))
dt1<-data.table(id=rep(2, 5), year=c(2005:2009), performance=(1000:1004))
dt
id year event
1: 2 2005 1
2: 2 2006 0
3: 2 2007 0
4: 4 2005 0
5: 4 2006 1
dt1
id year performance
1: 2 2005 1000
2: 2 2006 1001
3: 2 2007 1002
4: 2 2008 1003
5: 2 2009 1004
I dt1
도 나타나지는 제 1 및 제 2 컬럼의 조합을 이용하여 이전의 서브 세트 싶다. 그 결과, dt
을 덮어 쓰지 않고 새로운 객체를 만들고 싶습니다. 이것이 내가 얻고 자하는 것입니다.
id year event
1: 2 2005 1
2: 2 2006 0
3: 2 2007 0
나는 다음과 같은 코드를 사용하여이 작업을 수행하려고 :
dt.sub<-dt[dt[,c(1:2)] %in% dt1[,c(1:2)],]
했지만 작동하지 않았다. 결과적으로 dt
과 동일한 데이터 테이블을 얻었습니다. 제 코드에는 적어도 두 가지 실수가 있다고 생각합니다. 첫 번째는 잘못된 방법을 사용하여 열로 data.table
을 부분 집합하는 것입니다. 두 번째, 그리고 꽤 명백한 것은 %in%
이 다중 열 개체가 아닌 벡터에 적용된다는 것입니다. 그럼에도 불구하고 더 효율적인 방법을 찾지 못했습니다 ...
도움을 주셔서 감사합니다!
많은 감사합니다! 아마도 이것은 매우 큰'data.table'에서 더 빠를 것입니다. – Riccardo
'dt1, list (event), nomatch = 0L]'을 실행하는 것이'performance' 컬럼을 원하지 않는다면, 더 빨리해야한다 ... – Arun
'data.table'는 자체 merge를 제공한다. 메서드를 호출합니다. 나는 속도가 비슷할 것으로 기대한다. – James