data.table의 .EACHI?
.EACHI
에서 정확히 무엇을하는지에 대한 문서를 찾을 수없는 것 같습니다 data.table
. 문서에서 이에 대한 간략한 언급을 봅니다.
알려진 그룹의 하위 집합에 대한 집계는 이러한 그룹을 i 및 설정에 전달할 때 특히 효율적
by=.EACHI
입니다. 경우i
data.table이며,DT[i,j,by=.EACHI]
평가하여j
들의 그룹에 대한DT
각 행의 해당i
조인. 우리는이 그룹을 각각 i라고 부릅니다.
그러나 맥락에서 "그룹"은 무엇을 DT
의미합니까? 설정된 키에 의해 그룹이 결정 DT
됩니까? 그룹이 모든 열을 키로 사용하는 모든 고유 행입니까? 나는 같은 것을 실행하는 방법을 완전히 이해 DT[i,j,by=my_grouping_variable]
하지만 어떻게 .EACHI
작동 하는지 혼란 스럽 습니다. 누군가 설명해 주시겠습니까?
여기 목록에 이것을 추가했습니다 . 그리고 우리는 계획대로 전달할 수 있기를 바랍니다.
그 이유는 by=.EACHI
최신 기능 (1.9.4 이후) 일 가능성이 높지만 기능 은 그렇지 않습니다 . 예를 들어 설명하겠습니다. 두 개의 data.tables X
및 Y
다음 이 있다고 가정합니다 .
X = data.table(x = c(1,1,1,2,2,5,6), y = 1:7, key = "x")
Y = data.table(x = c(2,6), z = letters[2:1], key = "x")
우리는 X[Y]
. 이것은 부분 집합 연산 과 유사 하지만 data.tables
(정수 / 행 이름 또는 논리 값 대신) 사용합니다. 의 키 열을 사용 Y
하여 Y
의 각 행에 대해 X
의 키 열 (에서 + 열)에서 일치하는 행을 찾아 반환합니다 Y
.
X[Y]
# x y z
# 1: 2 4 b
# 2: 2 5 b
# 3: 6 7 a
이제 Y
의 키 열 (여기서는 키 열 하나만)의 각 행에 대해에서 일치 하는 수 를 가져오고 싶다고 가정 해 보겠습니다 X
. 버전에서는 data.table
<1.9.4 , 우리는 단순히 지정하여이 작업을 수행 할 수 있습니다 .N
에서 j
다음과 같이 :
# < 1.9.4
X[Y, .N]
# x N
# 1: 2 2
# 2: 6 1
이것이 암시 적으로하는 것은의 존재 하에서 (의 행에 해당하는) 의 각 일치 결과에 대해를 j
평가 j-expression
하는 것입니다 . 이것은 숨겨진 by가있는 것처럼 보이기 때문에 by-without-by 또는 implicit-by 라고 불렀 습니다.X
Y
문제는 이것이 항상 작업을 수행한다는 by
것입니다. 따라서 조인 후 행 수를 알고 싶다면 다음을 수행해야합니다 X[Y][ .N]
(또는 nrow(X[Y])
이 경우 간단히 ). 즉, 우리가 j
원하지 않는 경우 동일한 호출에서 표현식을 가질 수 없습니다 by-without-by
. 결과적으로 예를 들어을 (를) 수행했을 때를 사용하여 X[Y, list(z)]
평가 했기 때문에 약간 느 렸습니다.list(z)
by-without-by
또한 data.table
사용자는이 될 요청 명시 적으로 참조 - 이 와 이 더 문맥.
따라서 by=.EACHI
추가되었습니다. 이제 우리가 할 때 :
X[Y, .N]
# [1] 3
의도 한대로 수행합니다 (혼란 방지). 조인으로 인한 행 수를 반환합니다.
과,
X[Y, .N, by=.EACHI]
의 j
각 행에 대해 일치하는 행에서 -expression을 평가합니다 Y
( Y
여기서의 키 열 값에 해당 ). 을 사용하면 더 쉽게 볼 수 있습니다 which=TRUE
.
X[.(2), which=TRUE] # [1] 4 5
X[.(6), which=TRUE] # [1] 7
.N
각각에 대해 실행 하면 2,1을 얻습니다.
X[Y, .N, by=.EACHI]
# x N
# 1: 2 2
# 2: 6 1
이제 두 가지 기능이 모두 있습니다. 도움이 되었기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/27004002/eachi-in-data-table
'Programing' 카테고리의 다른 글
Spring MVC의 UTF-8 인코딩, FORM 문제 (0) | 2020.11.28 |
---|---|
.NET 4.0에서 매우 높은 메모리 사용량 (0) | 2020.11.28 |
SQL Server 세션에서 자동 커밋을 어떻게 설정합니까? (0) | 2020.11.27 |
컨트롤 색상을 어떻게 호출 할 수 있습니까? 기본 양식 색상을 의미합니까? (0) | 2020.11.27 |
Java 제네릭 : 여러 제네릭 매개 변수? (0) | 2020.11.27 |