1
は
以前と過去の行のインデックスと2つのデータフレームをマージすると、私はこのようなデータセットを考えてみましょう:R:
origin=data.frame(Date=as.Date(c("2016-08-05","2016-08-04","2016-08-03")),
L=c(1,2,3),
Type=c("H","L","H"))
Date L Type
1 2016-08-05 1 H
2 2016-08-04 2 L
3 2016-08-03 3 H
end=data.frame(Date=as.Date(c("2016-08-05","2016-08-04","2016-08-03","2016-08-02","2016-08-01")),
N=c(50,40,30,20,10),
Name=c("CA","CB","CC","CD","CE"),
Vol=c(2,1,2,2,3),
Act=c(0.1,0.2,0.3,0.2,0.2))
Date N Name Vol Act
1 2016-08-05 50 CA 2 0.1
2 2016-08-04 40 CB 1 0.2
3 2016-08-03 30 CC 2 0.3
4 2016-08-02 20 CD 2 0.2
5 2016-08-01 10 CE 3 0.2
私はこのような何かしたい:私は維持したい
Date L Type N Name Vol Act
3 2016-08-05 1 H 50 CA 2 0.1
3 2016-08-05 1 H 40 CB 1 0.2
3 2016-08-05 1 H 30 CC 2 0.3
2 2016-08-04 2 L 40 CB 1 0.2
2 2016-08-04 2 L 30 CC 2 0.3
2 2016-08-04 2 L 20 CD 2 0.2
1 2016-08-03 3 H 30 CC 2 0.3
1 2016-08-03 3 H 20 CD 2 0.2
1 2016-08-03 3 H 10 CE 3 0.2
を元の列の日付を「origin」とし、マージでは、ループのマージのような、現在の日付と前の日付の値「end」(前の2つの値)をマージします。
非常に異なっており、現在および以前の行の値によって、2つのデータフレームをマージしませんmerge(x = origin, y = end, by = "Date")
Date L Type N Name Vol Act
1 2016-08-03 3 H 30 CC 2 0.3
2 2016-08-04 2 L 40 CB 1 0.2
3 2016-08-05 1 H 50 CA 2 0.1
ので、私は:他の記事では、唯一の共通の値が3行が結果与える、一致していますこれについてどうやって行くのか分かりません。
これは実際に私の問題を解決しました。しかし、私がここで提案したデータフレームが問題を完全に反映していなかったことに気付きませんでした。実際には、2つのデータフレームをマージする必要がありますが、2番目のデータフレームは複数の列(最大10)を持ち、5つまでのラグが必要です。だから私はその事件を完全に反映させるために質問を整理しています。 – hachondeoro