나는 데이터가 또는 데이터 으로 저장되고 id
- month
조합 당 여러 번 관찰 한 데이터가 있습니다. 변수에 행 번호를 저장하고 싶습니다. row
이라고 부릅시다.그룹별로 행 번호를 저장하는 방법
dplyr에서이 작업을 수행하는 방법을 알고 있지만 (순수한) data.table에서 수행하는 방법을 배우고 싶습니다. 나는 그것이 쉬운 작업이라고 생각하지만 작동하는 해결책을 찾을 수없는 것 같습니다.
Reprex는 : 다른 data.table 수익률 뭔가에 유사한 작업을 수행
df %>%
group_by(id, month) %>%
mutate(row = row_number(id))
# A tibble: 6 x 3
# Groups: id, month [4]
id month row
<dbl> <dbl> <int>
1 1 1 1
2 1 1 2
3 1 2 1
4 2 1 1
5 2 1 2
6 2 2 1
:
library(dplyr)
library(data.table)
df <- data_frame(id = c(1, 1, 1, 2, 2, 2), month = c(1, 1, 2, 1, 1, 2))
dt <- data.table(df)
내 dplyr 솔루션은 예상 출력을 제공
dt[, row := row_number(id), by = c("id", "month")]
id month row
1: 1 1 1
2: 1 1 1
3: 1 2 1
4: 2 1 1
5: 2 1 1
6: 2 2 1
또는 :
dt[, row := .I, by = c("id", "month")]
id month row
1: 1 1 1
2: 1 1 2
3: 1 2 3
4: 2 1 4
5: 2 1 5
6: 2 2 6
나는 왜 이런 일이 일어나는 지 알고 싶지만 (row_number(id)
은 단순히 각 그룹의 첫 번째 행의 첫 번째 행 번호를 나타냄) 순수한 data.table에서 예상되는 결과를 얻는 방법을 모른다. 그냥`DT
[행 : = 서열 (.N) = C를 ("ID", "달")에 의해]'돌이켜 보면 그렇게 간단한 – Sotos
. 고마워요! –
@Sotos Fyi,'dt [, v : = rowid (id, month)]' – Frank