2012-02-10 7 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

+1

ビット数の少ない入力の場合: 'with(mydf、sum(value [plots ==" A "&dates <= endA]))' –

関連する問題