2012-02-10 3 views
1

필자는 다른 플롯, 샘플링 및 값의 날짜가있는 매우 긴 데이터 프레임을 사용합니다. 데이터 프레임의 예는 다음과 같습니다.정의 날짜까지의 합계 값

끝 날짜가 다른 경우 어떻게 플롯 A와 플롯 B의 열 "값"의 합계를 계산할 수 있습니까?

플롯 A 끝 날짜의 예는 5.1.2010이고 합계는 25이고 플롯 B의 경우 3.1.2010이므로 합계는 12가됩니다. 질문이 이해되기를 바랍니다. 이 같은

데이터 프레임보기는 : 그들에 값을 할당하지에 좋은 형태 그래서

date <- c("1.1.10", "1.1.10", "2.1.10", "2.1.10", "3.1.10", "3.1.10", "4.1.10", "4.1.10", "5.1.10", "5.1.10") 
date <- as.Date(date, "%d.%m.%y") 
plot <- c("A","B","A","B","A","B","A","B","A","B") 
value <- seq(1:10) 
data.frame(date, plot, value) 

답변

2

, '음모'와 같은 이름은 이미 R에서 촬영. 먼저 data.frame 또는 그와 비슷한 것으로 stick 한 다음 logicals를 사용하십시오 :

dates <- as.Date(c("1.1.10", "1.1.10", "2.1.10", "2.1.10", "3.1.10", "3.1.10",  "4.1.10", "4.1.10", "5.1.10", "5.1.10"), "%d.%m.%y") 
    plots <- c("A","B","A","B","A","B","A","B","A","B") 
    value <- seq(1:10) 
    mydf <- data.frame(dates, plots, value) 
    endA <- as.Date("5.1.10", "%d.%m.%y") 
    endB <- as.Date("3.1.10", "%d.%m.%y") 
    sum(mydf$value[mydf$plots=="A" & mydf$dates <= endA]) # 25 
    sum(mydf$value[mydf$plots=="B" & mydf$dates <= endB]) # 12 
+0

쉽습니다! :) 고맙습니다! – Eco06

+1

조금 적게 타이핑하는 경우 :'with (mydf, sum (value [plots == "A"& dates <= endA]))' –