【问题标题】:sum value until defined date到定义日期的总和
【发布时间】:2012-02-10 19:14:27
【问题描述】:

我有一个很长的数据框,其中包含不同的图、采样日期和值。 数据框的示例如下。

如果结束日期不同,我如何计算图 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)

【问题讨论】:

    标签: r date loops sum


    【解决方案1】:

    首先,像“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
    

    【讨论】:

    • 少打字:with(mydf, sum(value[plots == "A" &amp; dates &lt;= endA]))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多