2017-11-10 8 views
3

特定のポイント間でRのデータの一部をサブセット化しようとしています。具体的には、最小値の後、最大値の前のデータのみを返すようにしています。私のデータセットは以下のものと似ています。だから、私はポイント8後、データポイント20特定のポイント間のサブセットデータR

x1 
1. 4 
2. 4 
3. 5 
4. 5 
5. 5 
6. 4 
7. 3 
8. 0 
9. 1 
10. 2 
11. 2 
12. 3 
13. 3 
14. 4 
15. 5 
16. 6 
17. 6 
18. 7 
19. 8 
20. 6 
21. 4 
22. 2 

前のポイントデータのサブセットをしようとしているので、予想される出力は、私が

min <- min(x1) 
max <- max(x1) 
newdata <- subset(x1,x1<max|x1>min) 

これを試してみました

8. 0 
9. 1 
10. 2 
11. 2 
12. 3 
13. 3 
14. 4 
15. 5 
16. 6 
17. 6 
18. 7 
19. 8 

だろうまったく同じデータセットを返します。すべての値が最小値を超えているか、または最大値を下回っているので意味があります。しかし、最小値から最大値まで具体的にデータを取得し、最小値と最大値の後にデータを除外する方法はありますか?おかげ

+3

'場合(which.min(Z) missuse

+0

期待される出力の例を挙げてください。 – amarchin

+0

しました。あなたの助けをありがとう – newstats

答えて

1

ycw's解決策は明らかに、よりエレガントですが、 - 私はあなたが

cdata<-as.data.frame(c(4,4,5,5,5,5,4,3,0,1,2,2,3,3,4,5,6,6,7,8,6,4,2)) 
min <- min(cdata) 
max <- max(cdata) 
rowmax<- max(which(cdata == max)) 
rowmin<- min(which(cdata == min)) 

if (rowmax>rowmin){ 
    cdata<-cdata[rowmin:rowmax,, drop=FALSE] 
} else{cdata<-cdata[rowmax:rowmin,, drop=FALSE]} 
+1

ありがとう。残念ながら、誰かが私の答えが気に入らず、私にdownvoteを与えました。気にしない、私はこれがOPのために役立つかどうか私の答えをここに保持する。ニースはあなたと話し、私はあなたが最高のことを願っています。 – www

関連する問題