сумма до определенной даты - PullRequest
1 голос
/ 10 февраля 2012

У меня очень длинный фрейм данных с разными графиками, датами выборки и значениями.Пример фрейма данных ниже.

Как можно рассчитать суммы столбца «значение» для участка 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 Ответ

2 голосов
/ 10 февраля 2012

Во-первых, такие имена, как '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
...