data.table
열 추가 및 수정
수색…
비고
공식 비 네트 인 "참조 의미론" 이이 주제에 대한 최고의 소개입니다.
주의 사항 : DT[where, select|update|do, by]
구문은 data.table의 열을 사용하여 작업하는 데 사용됩니다.
- "where"부분이
i
인수입니다. - "select | update | do"부분은
j
인수입니다.
이 두 인수는 일반적으로 이름 대신 위치에 의해 전달됩니다.
열에 대한 모든 수정은 j
에서 수행 할 수 있습니다. 또한, set
기능이 사용할 수 있습니다.
값 편집
# example data
DT = as.data.table(mtcars, keep.rownames = TRUE)
열 편집
새 열을 만들거나 기존 열을 수정하려면 j
에서 :=
연산자를 사용하십시오.
DT[, mpg_sq := mpg^2]
행의 하위 집합에 대한 편집
i
인수를 사용하여 "어디에서"편집해야하는 행을 부분 집합으로 만드십시오.
DT[1:3, newvar := "Hello"]
data.frame에서와 같이 행 번호 나 논리 테스트를 사용하여 부분 집합을 만들 수 있습니다. 이는 [IN A가 "가입"을 사용하는 것도 가능하다 i
[need_a_link] 수정시].
열 제거
NULL
로 설정하여 열 제거 :
DT[, mpg_sq := NULL]
DT
는 DT
으로 수정 되었기 때문에 결과를 <-
할당하지 않습니다.
여러 열 편집
:=
연산자의 다 변수 형식을 사용하여 여러 열을 추가합니다.
DT[, `:=`(mpg_sq = mpg^2, wt_sqrt = sqrt(wt))]
# or
DT[, c("mpg_sq", "wt_sqrt") := .(mpg^2, sqrt(wt))]
.()
구문은 LHS := RHS
의 오른쪽이 열 목록 일 때 사용됩니다.
여러 순차 종속 열 편집
열이 종속되어 있고 순서대로 정의해야하는 경우 몇 가지 방법은 다음과 같습니다.
DT[, c("mpg_sq", "mpg2_hp") := .(temp1 <- mpg^2, temp1/hp)]
# or
DT[, c("mpg_sq", "mpg2_hp") := {temp1 = mpg^2; .(temp1, temp1/hp)}]
동적으로 결정된 이름으로 열 편집
동적으로 결정된 열 이름의 경우 괄호를 사용하십시오.
vn = "mpg_sq"
DT[, (vn) := mpg^2]
set
사용
열은 수정할 수 있습니다 set
이 거의 필요하지만, 오버 헤드에있는 작은 감소 :
set(DT, j = "hp_over_wt", v = mtcars$hp/mtcars$wt)
열 순서 변경
# example data
DT = as.data.table(mtcars, keep.rownames = TRUE)
열의 순서를 재 배열하려면 setcolorder
사용 setcolorder
. 예를 들어,이를 뒤집을 때
setcolorder(DT, rev(names(DT)))
data.table에서 열 포인터 목록을 순열하게 바꾸고 있기 때문에 성능 측면에서 비용이 거의 들지 않습니다.
열 이름 바꾸기
# example data
DT = as.data.table(mtcars, keep.rownames = TRUE)
열의 이름을 바꾸려면 (데이터를 동일하게 유지하면서) 새 이름으로 열에 데이터를 복사하고 이전 이름을 삭제할 필요가 없습니다. 대신, 우리는
setnames(DT, "mpg_sq", "mpq_squared")
참조로 원래 열을 수정하십시오.
요인 레벨 및 기타 열 속성 수정
# example data
DT = data.table(iris)
참조로 요인 수준을 수정하려면 setattr
사용하십시오.
setattr(DT$Species, "levels", c("set", "ver", "vir")
# or
DT[, setattr(Species, "levels", c("set", "ver", "vir"))]
두 번째 옵션은 결과를 화면에 인쇄합니다.
setattr
사용하면 일반적으로 levels(x) <- lvls
일 때 발생하는 복사본을 피할 수 있지만 일부 검사는 건너 뛸 수 있으므로 올바른 수준의 벡터를 지정하는 것이 중요합니다.