이 코드의 속도를 높이려면 도움이 필요합니다!누적 합계가 30 행입니다. 느린 코드 개선 필요
목표는 첫 번째 DF : TPS_Jan7_11h_13h_CheckIMEI의 TPS (초당 트랜잭션)가 레코드 1에서 30까지 누적 된 다음 다시 0으로 재설정하고 다시 수행하는 데이터 프레임을 작성하는 것입니다.
이
는 그래프 형태로 모습입니다 : 내가 0으로 재설정해야 시퀀스를 만들기 시작 ...https://docs.google.com/spreadsheets/d/1-286za99C5gdHLDErR9B4ZazVrZFFINGaH3xzVMghFk/edit?usp=sharing
내 데이터 세트가 6millions 행 이상이
내 누적 변수. 그런 다음 전체 데이터 세트를 살펴보고 이전 값의 맨 위에 추가합니다.
저는 쿼드 코드 x64 8 기가비트 머신에서 몇 시간 동안 이것을 실행했지만 여전히 실행 중입니다 ... 그래서 ... 천천히!
아이디어를 어떻게 빨리 할 수 있습니까? 테이블이있는 부분 집합 또는 일부 마법?
여기에 코드입니다 :
이# Create a sequence of when to reset the cumulative TPS
TPS_Jan7_11h_13h_CheckIMEI_seq30 <- seq(from = 1,nrow(TPS_Jan7_11h_13h_CheckIMEI),by = 30)
# Initialize Dataframe
TPS_Jan7_11h_13h_CheckIMEI_CumulTPS30 <- data.frame(matrix(ncol = 3, nrow = nrow(Jan7_11h_13h_CheckIMEI)))
colnames(TPS_Jan7_11h_13h_CheckIMEI_CumulTPS30) <- c("CumulTPS","100%","130%")
TPS_Jan7_11h_13h_CheckIMEI_CumulTPS30[2] = 1000*30
TPS_Jan7_11h_13h_CheckIMEI_CumulTPS30[3] = (1000*30)*1.3
CumulVal = 0
TPS_Jan7_11h_13h_CheckIMEI_CumulTPS30$CumulTPS[1] = TPS_Jan7_11h_13h_CheckIMEI$TPS[1]
for(i in 2:nrow(Jan7_11h_13h_CheckIMEI)) {
CumulVal = CumulVal + TPS_Jan7_11h_13h_CheckIMEI$TPS[i-1]
TPS_Jan7_11h_13h_CheckIMEI_CumulTPS30$CumulTPS[i] = CumulVal
# print(CumulVal)
if (i %in% TPS_Jan7_11h_13h_CheckIMEI_seq30) CumulVal = 0
}
사용자 TPS DF는 단순히 첫 번째 열에서 TPS 열 및 타임 스탬프에 TPS의 목록입니다.
목표는 스프레드 시트 예제에 넣은 것을 다시 작성하는 것이지만 수백만 행에 있습니다!
감사합니다, (30 개) 기록의 그룹으로 데이터 그룹에
사이먼
생각의 컷 문서를 살펴보고 있지만, 나는 2 = 첫째 + 둘째 누적 합계 ROW1 = 최초의 TPS 값, 행이 필요 ... row3 = first + second + third ... 등등 ... 연결된 스프레드 시트를보십시오. 파란 선은 TPS ... 녹색은 누적됩니다. –
네 말이 맞아. 내가 잘못 읽었다. 죄송합니다. 이 경우 요약 대신 mutate를 사용해야하고 일반 합계 대신 cumsum 함수를 사용해야합니다. 내 코드를 수정하겠습니다. – bsg
지금 시도 할 수는 없지만 단순히 "sum (TPS)"합계를 30 초 단위로 넣으면됩니다. 실제로 누적이 필요합니다. 베이스 R의 cumsum 함수를 찾고 있었는데 단순히 sum 대신 cumsum을 사용할 수 있습니까? –