이 질문에 대한 답변이 이미 있지만 찾을 수 없으면 사과드립니다. 나는 그것을 해결하기 위해 내 모든 생각을 게시 할 것입니다. 문제는 데이터베이스가 크고 PC가이 계산을 수행 할 수 없다는 것입니다 (코어 i7 및 8GB RAM). Microsoft R Open 3.3.2 및 RStudio 1.0.136을 사용하고 있습니다.큰 데이터베이스에 R 열 작성
tcm.RData (471MB)라는 R의 대형 데이터베이스에 새 열을 만들려고했습니다. 필자의 필요성은 Shape_Area를 Shape_Area와 COD (ShapeSum이라고 함)의 합으로 나눈 기둥입니다. 처음에는 하나의 수식에서 처리하려고했지만 실패한 경우 다시 한 번 Shape_Area를 COD로 요약하고 Shape_Area를 ShapeSum으로 나눕니다.
> str(tcm)
Classes ‘data.table’ and 'data.frame': 26835293 obs. of 15 variables:
$ OBJECTID : int 1 2 3 4 5 6 7 8 9 10 ...
$ LAT : num -15.7 -15.7 -15.7 -15.7 -15.7 ...
$ LONG : num -58.1 -58.1 -58.1 -58.1 -58.1 ...
$ UF : chr "MT" "MT" "MT" "MT" ...
$ COD : num 510562 510562 510562 510562 510562 ...
$ AREA_97 : num 1130 1130 1130 1130 1130 ...
$ Shape_Area: num 255266.7 14875 25182.2 5503.9 95.5 ...
$ TYPE : chr "2" "2" "2" "2" ...
$ Nomes : chr NA NA NA NA ...
$ NEAR_DIST : num 376104 371332 371410 371592 371330 ...
$ tc_2004 : chr "AREA_URBANA" "DESFLORESTAMENTO_2004" "DESFLORESTAMENTO_2004" "DESFLORESTAMENTO_2004" ...
$ tc_2008 : chr "AREA_URBANA" "AREA_NAO_OBSERVADA" "AREA_NAO_OBSERVADA" "AREA_NAO_OBSERVADA" ...
$ tc_2010 : chr "AREA_URBANA" "PASTO_LIMPO" "PASTO_LIMPO" "PASTO_LIMPO" ...
$ tc_2012 : chr "AREA_URBANA" "PASTO_SUJO" "PASTO_SUJO" "PASTO_SUJO" ...
$ tc_2014 : chr "AREA_URBANA" "PASTO_LIMPO" "PASTO_LIMPO" "PASTO_SUJO" ...
- attr(*, ".internal.selfref")=<externalptr>
> tcm$ShapeSum <- tcm[, Shape_Area := sum(tcm$Shape_Area), by="COD"]
Error: cannot allocate vector of size 204.7 Mb
Error during wrapup: cannot allocate vector of size 542.3 Mb
은 또한 다음과 같은 코드를 시도했지만 모두 실패 :
> tcm$ShapeSum <- apply(tcm[, c(Shape_Area)], 1, function(x) sum(x), by="COD")
Error in apply(tcm[, c(Shape_Area)], 1, function(x) sum(x), by = "COD") : dim(X) must have a positive lenght
> tcm$ShapeSum <- mutate(tcm, ShapeSum = sum(Shape_Area), by="COD", package = "dplyr")
이
> tcm$ShapeSum <- tcm[, transform(tcm, ShapeSum = sum(Shape_Area)), by="COD"]
> tcm$ShapeSum <- transform(tcm, aggregate(tcm$AreaShape, by=list(Category=tcm$COD), FUN=sum))
Error in aggregate.data.frame(as.data.frame(x), ...): no rows to aggregate
내가 관심과 대단히 감사합니다 어떤 찻잔 이 문제를 해결하기위한 제스처.Error: cannot allocate vector of size 204.7 Mb Error during wrapup: cannot allocate vector of size 542.3 Mb
data.table이므로'data.table' 메서드를 사용하는 것이 더 좋습니다. 'tcm [, ShapeSum : = sum (Shape_Area) by by COD]' – akrun