繁体   English   中英

R中特定点之间的子集数据

[英]Subset data between specific points in R

我试图在特定点之间的R中对一些数据进行子集化。 具体来说,我希望只返回最小值之后和最大值之前的数据。 我的数据集类似于以下内容。 所以,我正在尝试在点8之后和数据点20之前对点数据进行子集化。

   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

所以预期的产量是

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

我努力了

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

这将返回完全相同的数据集。 这是有道理的,因为所有值都高于最小值或低于最大值。 但有没有办法将数据从最小值到最大值具体化,并在最小值之前和最大值之后排除数据? 谢谢

ycw的解决方案显然更优雅,但我会给你我的

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]} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM