data.table subset
Table of contents
결과가 data.table이 아닌 vector로 나오는 경우,
대부분의 결과는 data.table 형태로,
Columns
. (dot)
특정 column만 select할때, .( )
를 활용
regression formulas에서 볼수 있었던 (ex. lm(y~., data=DT)
) .
는”all other variables”을 의미하지만,
data.table에서는 “list”를 의미한다.
Vector를 변수로 사용하여 column 선택
Vectors 를 사용하여 column 선택
Pass column name using variable
https://stackoverflow.com/questions/9202413/how-do-you-delete-a-column-by-name-in-data-table
Subsetting column
.SD만 단순히 사용하면, 원래 값과 같다.
A B C D
1: a 1 1 3
2: a 2 6 6
3: b 3 5 4
4: b 1 3 2
5: c 2 4 1
6: c 3 2 5
B
1: 1
2: 2
3: 3
4: 1
5: 2
6: 3
Self reference
.SD 와 .SDcols (Subset of Data columns)
.SD는 하나의 data.table의 columns을 각각 sub-data.table로 나누어 self reference할수 있게 해준다.
A column와 B column을 paste하는 것을 .SD를 활용하여 같은 결과를 구현할수 있다.
[1] "a1" "a2" "b3" "b1" "c2" "c3
ROW
한 column에 조건을 사용하여 row subsetting
sub-data.table의 ridx를 활용하여 원하는 row만 뽑아올수 있다. (각 그룹의 B열에서 max값을 갖는 row를 뽑아옴)
A B C D
1: a 2 4 5
2: b 3 3 3
3: c 3 5 1
A B
1: a 2
2: b 3
3: c 3