2016-12-12 1 views
1

j 인수에서 작성한 열을 기반으로 data.table의 서브 세트를 만들고 싶습니다. 나는 "오류가 eval (expr, envir, enclos) : object 'suma'not found"(아래 예제)를 얻는 것을 감안할 때 이것이 가능하지 않다고 가정하고 있지만 아마도 주위에 방법이있을 것입니다. 어떤 제안? 당신이 별도의 작업에 열을 만든 후 필터링을하는 것입니다 주위에 data.table J로 정의 된 열로 서브 세트하기

test <- data.table(A = c('a','b','c'), B = rep(c(1,2,3),4), C = c('typ1','typ2')) 

head(test) 
    A B C 
1: a 1 typ1 
2: b 2 typ2 
3: c 3 typ1 
4: a 1 typ2 
5: b 2 typ1 
6: c 3 typ2 

test[ suma > 4 , .(suma = sum(B)) , by = .(A,C)] 

Error in eval(expr, envir, enclos) : object 'suma' not found 
+2

를 사용하여 이전 동작의 종료에 연쇄 될 수있다 'j'를 계산하는 것입니다. 그래서 당신은 당신의 방식대로 할 수 없습니다. 일부 자습서는 웹 사이트의 "시작하기"페이지를 참조하십시오. http://r-datatable.com – Frank

+0

참조 용으로 http://stackoverflow.com/questions/36292702/data-table-dti-j의 사본 종류 -by-does-not-select-groups-using-i를 사용합니다 (FR에 따라 답변이 아직 없기 때문에 속는 사람으로 표시 할 수 없습니다 https://github.com/Rdatatable/data.table/ 문제점/788). – Frank

답변

3

, 방법을 주셔서 감사합니다. data.table 이것은 by` 이전에``나중에 참조 DT [I, 의한 J]`i``의해 필터 우선, 다음 그룹을 [

test[ , .(suma = sum(B)) , by = .(A,C)][suma > 4] 
# A C suma 
# 1: c typ1 6 
# 2: c typ2 6 
관련 문제