Year, ID, Count (아래의 첫 번째 3 열 참조)의 세 열이있는 data.table 테스트가 있습니다. 그래서 같은 ID와 올해에 걸쳐 요약 네 번째 열을 추가하려면 : 내가 가진 무엇 data.table()에서 sum()을 사용하여 참조를 지정하면 잘못된 결과가 발생합니다.
setkey(test, Year, ID)
test[, annualCount := sum(Count), by=list(Year, ID)]
이상한 보인다 : 그 기능은 [자동으로 내 annualCount에 1을 추가 할 것으로 보인다. 예를 들어 ID 210이 Y1 인 경우 9 대신 9를 부여해야합니다.
data.table의 버그입니까?
Year ID Count annualCount
1: Y1 210 1 9
2: Y1 210 1 9
3: Y1 210 0 9
4: Y1 210 1 9
5: Y1 210 1 9
6: Y1 210 1 9
7: Y1 210 1 9
8: Y1 210 1 9
9: Y1 210 1 9
10: Y1 3197 1 6
11: Y1 3197 1 6
12: Y1 3197 0 6
13: Y1 3197 1 6
14: Y1 3197 1 6
15: Y1 3197 1 6
업데이트 : R 버전 2.15.0 (2012-03-30)를 사용하고,하지만 난 data.table_1.8.6를 설치했습니다. 이 패키지를 설치하면이 버전이 2.15.1에 빌드되었다는 경고가 나타납니다. 이것이 버그의 원인입니까?
업데이트 2 : 최신 R (현재 2.15.2)을 설치했지만 도움이되지 않습니다. 동일한 데이터 집합으로, 나는
test1 <- test[, list(annualCount = sum(Count)), by=list(Year, ID)]
가 나는 올바른 결과를 얻을 호출하는 경우. 하지만
test2 <- test[, list(annualCount = sum(Count, na.remove = T)), by=list(Year, ID)]
를 호출하는 경우 다음 [자동으로 내 합계에 1을 추가합니다. 불행히도, 나는 처음부터이 오류와 함께이 데이터 세트를 복제 할 수 없었습니다.
업데이트 3 : dput (테스트) 출력.
structure(list(Year = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Y1", "Y2", "Y3"), class = "factor"),
ID = c(210, 210, 210, 210, 210, 210, 210, 210, 210,
3197, 3197, 3197, 3197, 3197, 3197),
Count = c(1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)),
.Names = c("Year","ID", "Count"), class = c("data.table", "data.frame"),
row.names = c(NA, -15L), .internal.selfref = <pointer: 0x7fb6dc000778>)
감사합니다.
내게 버그가 없으면 데이터가 8 개나 5 개가됩니다! – agstudy
감사합니다. 내 질문을 업데이트했습니다. BTW, 또 다른 모의 데이터 세트를 사용하려고하면이 버그를 복제 할 수 없습니다. 나는 내 머리카락을 당길거야 – AdamNYC
커피가 필요할지도 모른다! – agstudy