を作成して私のデータは、このようになりますし、すでにソートされていますは、同じIDと前の値を含む新しい列
> dput(df)
structure(list(id = c(1, 2, 3, 3, 2, 2, 1), x = c(20, 40, 70,
70, 80, 40, 70)), .Names = c("id", "x"), row.names = c(NA, -7L
), class = "data.frame")
> df
id x
1 1 20
2 2 40
3 3 70
4 3 70
5 2 80
6 2 40
7 1 70
私は同じid
でx
の前の値を含む新しい列を作成する必要があります。
for (i in 1:nrow(df)){
id0 = df$id[i]
j = i + match(id0 , df$id[i+1:nrow(df)])
df$old_x[i] = df$x[j]
}
が、それはあまりにも遅いです:私はこのようにそれを行うことができます
> df
id x old_x
1 1 20 70
2 2 40 80
3 3 70 70
4 3 70 NA
5 2 80 40
6 2 40 NA
7 1 70 NA
:だから、結果がでなければなりません。それをする最善の方法は何でしょうか?
ありがとうございました! dplyr
を使用
以前の値または次の値ですか?あなたの出力は次の値です。以前の値であれば、 'lead'の代わりに' lag'を使います。 – Sumedh
私のデータは実際に降順でソートされているので、私は 'previous'を意味しました。 – Scarabee