2012-02-10 63 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或类似的,然后使用逻辑:

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 2012-02-10 21:44:24

+1

对于少一点打字:'与(myDF上,总和(值[图== “A” &日期<=恩达]))' – 2012-02-11 05:15:39