수색…


소개

data.table 패키지는 많은 변화와 혁신을 거듭했습니다. 다음은 기존 코드를보고 기존 블로그 게시물을 검토하는 데 도움이 될 수있는 몇 가지 잠재적 위험 요소입니다.

고유하고 복제 된 데이터가 더 이상 키순 데이터 테이블에서 작동하지 않습니다.

이것은 data.table> = 1.9.8로 이동하는 사람들을위한 것입니다.

애완 동물 소유자 및 이름의 데이터 세트가 있지만 일부 반복 된 데이터가 수집 된 것으로 의심됩니다.

library(data.table)
DT <- data.table(pet = c("dog","dog","cat","dog"),
                 owner = c("Alice","Bob","Charlie","Alice"),
                 entry.date = c("31/12/2015","31/12/2015","14/2/2016","14/2/2016"),
                 key = "owner")


> tables()
     NAME NROW NCOL MB COLS                 KEY  
[1,] DT      4    3  1 pet,owner,entry.date owner
Total: 1MB

테이블을 키잉하여 불러 오면 그것을 소트 할 것이다. 앨리스가 두 번 입력되었습니다.

> DT
   pet   owner entry.date
1: dog   Alice 31/12/2015
2: dog   Alice  14/2/2016
3: dog     Bob 31/12/2015
4: cat Charlie  14/2/2016

데이터를 가장 최근의 데이터 캡처 날짜를 사용하여 가장 최근의 값을 TRUE로 설정하여 unique 키를 사용하여 데이터에서 중복 된 데이터를 제거한다고 가정 해 보겠습니다.

1.9.8
clean.DT <- unique(DT, fromLast = TRUE)

> tables()
    NAME     NROW NCOL MB COLS                 KEY  
[1,] clean.DT    3    3  1 pet,owner,entry.date owner
[2,] DT          4    3  1 pet,owner,entry.date owner
Total: 2MB

앨리스 중복이 제거되었습니다.

1.9.8
clean.DT <- unique(DT, fromLast = TRUE)

> tables()
     NAME     NROW NCOL MB COLS                 KEY  
[1,] clean.DT    4    3  1 pet,owner,entry.date owner
[2,] DT          4    3  1 pet,owner,entry.date owner

이것은 작동하지 않습니다. 여전히 4 행!

고치다

by= 매개 변수 사용하십시오. by= 매개 변수 는 더 이상 기본값이 아니며 모든 열에 사용됩니다.

clean.DT <- unique(DT, by = key(DT), fromLast = TRUE)

이제 모든 것이 잘됩니다.

> clean.DT
   pet   owner entry.date
1: dog   Alice  14/2/2016
2: dog     Bob 31/12/2015
3: cat Charlie  14/2/2016

세부 정보 및 임시 수정본

자세한 내용 은 NEWS 릴리즈 노트의 1 번 항목 을 참조하십시오.

v1.9.8의 변경 사항 (CRAN의 경우 2016 년 11 월 25 일)

잠재적 인 변화의 변화

  1. 기본적으로 모든 컬럼은 unique() , duplicated()uniqueN() data.table 메소드, # 1284 및 # 1841에 의해 사용됩니다. 이전 동작을 복원하려면 options(datatable.old.unique.by.key=TRUE) . 1 년 후 이전 기본 설정을 복원하는이 옵션은 경고와 함께 사용되지 않습니다. 2 년 후에 옵션이 제거됩니다. 명확하게하기 위해 by=key(DT) 를 명시 적으로 전달하십시오. 기본값에 의존하는 코드 만 영향을받습니다. data.table을 사용하는 CRAN 및 Bioconductor 패키지가 출시 전에 확인되었습니다. 9 명이 변경해야하고 통고를 받았다. 테스트 커버리지가없는 코드 라인은이 체크에 의해 놓친 것이다. CRAN 또는 Bioconductor에없는 패키지는 확인되지 않았습니다.

따라서 코드가 수정 될 때까지 임시 해결 방법으로 옵션을 사용할 수 있습니다.

options(datatable.old.unique.by.key=TRUE)


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