私は2つのベクトルを持っています:
x<-c(0,1,0,2,3,0,1,1,0,2)
y<-c("00:01:00","00:02:00","00:03:00","00:04:00","00:05:00",
"00:06:00","00:07:00","00:08:00","00:09:00","00:10:00")
y
の値が0で中断されていない、の値だけを選択する必要がありますx
。その結果、次のようなデータフレームを取得したいと思います。
y x
00:04:00 2
00:05:00 3
00:07:00 1
00:08:00 1
このようなスクリプトを作成しましたが、大きなデータセットでは時間がかかります。よりエレガントな解決策はありますか?そして、なぜdf<-rbind(bbb,df)
逆dfを返すのだろうか?
aaa<-data.frame(y,x)
df<-NULL
for (i in 1:length(aaa$x)){
bbb<-ifelse((aaa$x[i]*aaa$x[i+1])!=0,
aaa$x[i],
ifelse((aaa$x[i]*aaa$x[i-1])!=0,
aaa$x[i],
NA))
df<-rbind(bbb,df)
}
df<-data.frame(rev(df))
aaa$x<-df$rev.df.
bbb<-na.omit(aaa)
bbb
私はRの初心者なので、できるだけ詳しく説明してください:)ありがとうございます!