반응형
레코드 수를 계산하고 data.table의 각 그룹 내에서 행 번호를 생성합니다.
다음 data.table이 있습니다.
set.seed(1)
DT <- data.table(VAL = sample(c(1, 2, 3), 10, replace = TRUE))
VAL
1: 1
2: 2
3: 2
4: 3
5: 1
6: 3
7: 3
8: 2
9: 2
10: 1
의 각 번호 내VAL
에서 :
- 레코드 / 행 수 계산
- 첫 번째, 두 번째, 세 번째 발생 등의 행 인덱스 (카운터)를 만듭니다.
결국 나는 결과를 원한다
VAL COUNT IDX
1: 1 3 1
2: 2 4 1
3: 2 4 2
4: 3 3 1
5: 1 3 2
6: 3 3 2
7: 3 3 3
8: 2 4 3
9: 2 4 4
10: 1 3 3
여기서 "COUNT"는 각 "VAL"에 대한 레코드 / 행 수이고 "IDX"는 각 "VAL"내의 행 인덱스입니다.
나는 함께 작동하도록 시도 which
및 length
사용 .I
:
dt[, list(COUNT = length(VAL == VAL[.I]),
IDX = which(which(VAL == VAL[.I]) == .I))]
그러나 이것은 .I
인덱스가있는 벡터를 참조하는 것처럼 작동하지 않으므로 .I[]
. 내부에서 .I[]
다시 문제에 직면 했지만 행 인덱스가 없으며 data.table
가능한 한 행을 반복하는 것을 피해야한다는 것을 알고 있습니다 ( FAQ 를 읽고 여기의 게시물을 따라).
그래서, data.table
방법은 무엇입니까?
사용 .N
...
DT[ , `:=`( COUNT = .N , IDX = 1:.N ) , by = VAL ]
# VAL COUNT IDX
# 1: 1 3 1
# 2: 2 4 1
# 3: 2 4 2
# 4: 3 3 1
# 5: 1 3 2
# 6: 3 3 2
# 7: 3 3 3
# 8: 2 4 3
# 9: 2 4 4
#10: 1 3 3
.N
에 의해 정의 된 그룹이있는 각 그룹의 레코드 수입니다 "VAL"
.
반응형
'your programing' 카테고리의 다른 글
유니 코드 정규화 (0) | 2020.12.30 |
---|---|
EditText.getText ()가 null을 반환합니까? (0) | 2020.12.30 |
Android Studio : 검색 결과에서 빌드 폴더의 파일 제외 (0) | 2020.12.30 |
Windows에 설치 한 후 Docker를 시작할 수 없습니다. (0) | 2020.12.30 |
안드로이드 스튜디오 3.1 EditText StackOverflowError (0) | 2020.12.30 |