0

このような多くの欠損値を持つ縦方向のデータフレームがあります。

ID = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3)
date = c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
cond = c(0,0,0,1,0,0,0,0,1,0,0,0,0,0,0)
var = c(1, NA , 2, 0,NA, NA, 3, NA,0, NA, 2, NA, 1,NA,NA)
df = data.frame(ID, date, cond,var)

2つの条件に基づいて、最後の観察を進めたいと思います。

1)cond=0関心のある変数のより高い値を観察し続ける必要がある場合。

2)cond=1関心のある変数の低い方の値を繰り越す必要がある場合。

エレガントな方法でこれを行う方法について誰かが考えていますか?

最終的なデータセットは次のようになります

ID = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3)
date = c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
cond = c(0,0,0,1,0,0,0,0,1,0,0,0,0,0,0)
var = c(1, 1 , 2, 0, 0, NA, 3, 3, 0, 0,2,2,2,2,2)
final = data.frame(ID, date, cond,var)

これまでのところ、最後の観測を進めることができましたが、条件を課すことはできませんでした

library(zoo)
df <- df %>%
  group_by(ID) %>% 
  mutate(var = 
           na.locf(var, na.rm = F))

どんな提案も歓迎します

4

2 に答える 2