수색…


비고

공식 비 네트 인 "참조 의미론" 이이 주제에 대한 최고의 소개입니다.

주의 사항 : 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]

DTDT 으로 수정 되었기 때문에 결과를 <- 할당하지 않습니다.

여러 열 편집

:= 연산자의 다 변수 형식을 사용하여 여러 열을 추가합니다.

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 일 때 발생하는 복사본을 피할 수 있지만 일부 검사는 건너 뛸 수 있으므로 올바른 수준의 벡터를 지정하는 것이 중요합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow