ほとんどが連続した行で構成されているデータフレームがあります。主に、一部が順序どおりでないか欠落していることを意味します。現在の行の連続行が存在する場合、両方の行のデータを使用していくつかの機能を実行したいと思います。存在しない場合は、スキップして次に進みます。私はループでこれを行うことができることを知っていますが、それはかなり遅いです。これはインデックスの使用と関係があると思います。これは、サンプルデータを使用した問題の例と、ループを使用した望ましい結果です。
df <- data.frame(id=1:10, x=rnorm(10))
df <- df[c(1:3, 5:10), ]
df$z <- NA
dfLoop <- function(d)
{
for(i in 1:(nrow(d)-1))
{
if(d[i+1, ]$id - d[i, ]$id == 1)
{
d[i, ]$z = d[i+1, ]$x - d[i, ]$x
}
}
return(d)
}
dfLoop(df)
では、ループを使用せずに同じ結果を得るにはどうすればよいでしょうか。助けてくれてありがとう。