data.table
data.table 만들기
수색…
비고
data.table은 base R의 data.frame 클래스의 향상된 버전입니다. 따라서 class()
속성의 vector는 "data.table" "data.frame"
에서 작동하는 함수도 data.table로 작업하십시오. 여기에 보여 지듯이 data.table을 생성,로드 또는 강요하는 많은 방법이 있습니다.
데이터를 강제 변환합니다.
data.frame을 data.table로 복사하려면 as.data.table
또는 data.table
사용 data.table
.
DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)
DT <- as.data.table(DF)
# or
DT <- data.table(DF)
이것은 거의 필요하지 않습니다. 한 가지 예외는 mtcars
와 같은 기본 제공 데이터 세트를 사용할 때입니다.이 데이터 세트는 mtcars
에서 수정할 수 없으므로 복사해야합니다.
data.table ()을 사용하여 빌드
같은 이름의 생성자가 있습니다.
DT <- data.table(
x = letters[1:5],
y = 1:5,
z = (1:5) > 3
)
# x y z
# 1: a 1 FALSE
# 2: b 2 FALSE
# 3: c 3 FALSE
# 4: d 4 TRUE
# 5: e 5 TRUE
달리 data.frame
, data.table
기본적으로 요인 문자열을 강요하지 않습니다
sapply(DT, class)
# x y z
# "character" "integer" "logical"
fread ()로 읽기
우리는 텍스트 파일에서 읽을 수 있습니다 :
dt <- fread("my_file.csv")
read.csv
와 달리 fread
는 문자열을 기본적으로 요소가 아닌 문자열로 읽습니다.
더 많은 예제는 [ fread
on topic [need_a_link]를 참조하십시오.
setDT ()를 사용하여 data.frame 수정
효율성을 위해 data.table은 data.table을 내부에서 만들기 위해 data.frame 또는 list를 변경하는 방법을 제공합니다.
# example data.frame
DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)
# modification
setDT(DF)
객체 DF
가 제자리에서 수정되었으므로 결과를 <-
할당하지 않습니다.
data.frame의 클래스 속성은 유지됩니다.
sapply(DF, class)
# x y z
# "factor" "integer" "logical"
copy ()를 사용하여 다른 data.table 복사
# example data
DT1 = data.table(x = letters[1:2], y = 1:2, z = (1:2) > 3)
data.tables가 조작되는 방식 때문에 DT2 <- DT1
은 복사본을 만들지 않습니다 . 즉, 나중에 DT2
의 열이나 다른 속성을 수정하면 DT1
에도 영향을줍니다. 실제 사본을 원할 때
DT2 = copy(DT1)
차이점을 확인하려면 사본이 없으면 어떻게 될까요?
DT2 <- DT1
DT2[, w := 1:2]
DT1
# x y z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2
DT2
# x y z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2
사본과 함께 :
DT2 <- copy(DT1)
DT2[, w := 1:2]
DT1
# x y z
# 1: a 1 FALSE
# 2: b 2 FALSE
DT2
# x y z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2
따라서 변경 사항은 후자의 경우 전파되지 않습니다.