2
特定の条件を満たす行の後にx行以内にあるデータフレーム内の行を削除しようとしています。特定の条件の行を囲むデータフレーム内の行のバッファを削除する方法
私は、応答変数、条件を表す測定タイプ、および時間を持つデータフレームを持っています。ここではモックのデータセットです。このモック場合
data <- data.frame(rlnorm(45,0,1),
c(rep(1,15),rep(2,15),rep(1,15)),
seq(
from=as.POSIXct("2012-1-1 0:00", tz="EST"),
to=as.POSIXct("2012-1-1 0:44", tz="EST"),
by="min"))
names(data) <- c('Variable','Type','Time')
、私は条件2が発生した後の状態1で最初の5行を削除します。
dist = vector()
for(i in 1:nrow(data)) {
if(data$Type[i] != 1) dist[i] <- 0
else {
position = i
tempcount = 0
while(position > 0 && data$Type[position] == 1){
position = position - 1
tempcount = tempcount + 1
}
dist[i] = tempcount
}
}
このコード:
私はこの問題を解決する方法を考えましたが1である各観測は、ここでの最後の2からある距離を決定する別のベクトルを生成することでした私が書いたコードですそのトリックを行いますが、非常に非効率です。私は、誰かがより洗練された、より速い解決策を持っていたかどうか疑問に思いました
これは素晴らしい動作です!ありがとう! – user2130093
恐ろしい、私は助けることができてうれしい。あなたが私の答えを受け入れることができれば、それはすばらしいチェックマークをクリックして;) – Florian
@ user2130093あなたの質問は不明です。あなたのタイトルは、基本的に "行をドロップ_ _行の条件行"と書いています。テキストでは、 "行を削除したいかどうか(条件= 2?)"と書いています。この答えは_before_ Type = 2の行を削除します。明確にしてください - 例を小さくし、期待される出力を表示します(たとえば、冗長変数を削除して行数を減らします)。 – Henrik