总值直到定义的日期

时间:2012-02-10 19:14:28

标签: r date loops sum

我有一个很长的数据框,有不同的图,采样日期和值。 下面是数据框的一个例子。

如果结束日期不同,我如何计算图A和图B的列“值”的总和?

关于绘图的示例结束日期是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)

1 个答案:

答案 0 :(得分:2)

首先,像'plot'这样的名字已经在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