Programing

data.table의 .EACHI?

lottogame 2020. 11. 28. 08:32
반응형

data.table의 .EACHI?


.EACHI에서 정확히 무엇을하는지에 대한 문서를 찾을 수없는 것 같습니다 data.table. 문서에서 이에 대한 간략한 언급을 봅니다.

알려진 그룹의 하위 집합에 대한 집계는 이러한 그룹을 i 및 설정에 전달할 때 특히 효율적 by=.EACHI입니다. 경우 idata.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 XY다음 이 있다고 가정합니다 .

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 라고 불렀 습니다.XY

문제는 이것이 항상 작업을 수행한다는 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

반응형