R 为向量的不同部分使用不同标准的向量子集
给定一个向量R 为向量的不同部分使用不同标准的向量子集,r,R,给定一个向量sub,我想对该向量进行子集划分,以删除不小于某个阈值x的任何前bp元素,并删除不大于某个阈值y的任何剩余元素。此问题的示例数据可能如下所示: sub <- c(0.05588, 0.05588, 0.05588, 0.05588, 0.05588, 0.05588, 0.05588, 0.05588, 0.0625856, 0.0625856, 0.0625856, 0.0625856, 0.0625856, 0.0692912, 0.0692912, 0.069
sub
,我想对该向量进行子集划分,以删除不小于某个阈值x
的任何前bp
元素,并删除不大于某个阈值y
的任何剩余元素。此问题的示例数据可能如下所示:
sub <- c(0.05588, 0.05588, 0.05588, 0.05588, 0.05588, 0.05588, 0.05588,
0.05588, 0.0625856, 0.0625856, 0.0625856, 0.0625856, 0.0625856,
0.0692912, 0.0692912, 0.0692912, 0.0692912, 0.0692912, 0.0692912,
0.0692912)
bp <- 10
x <- 0.06
y <- 0.07
sub据我所知,对于数据的第一个bp
元素,您希望删除高于某个阈值x
的所有元素,对于其余元素,删除低于某个阈值y
的所有元素
让我们用一组完整的问题数据来考虑:
set.seed(144)
(sub <- rnorm(10))
# [1] -1.6505562 0.6028106 -0.4738839 -1.7976130 -1.4211210 0.1588875 0.1297662 -1.2561688
# [9] 0.1476671 0.9791739
bp <- 5
x <- 0
y <- 0.13
拆分数据的最终目标是什么?是否要对数据的每个子集执行计算?是否需要用于各种分析的data.frame
对象列表?为不同的子集创建一个分类变量会对您有好处吗?最终目标是在删除阈值数据的情况下重新组合数据集。这是一小段时间序列数据。bp是数据的断点,因此阈值标准各不相同。
new[new<=y][bp:length(new)] <- NA
new2 <- na.omit(new)
set.seed(144)
(sub <- rnorm(10))
# [1] -1.6505562 0.6028106 -0.4738839 -1.7976130 -1.4211210 0.1588875 0.1297662 -1.2561688
# [9] 0.1476671 0.9791739
bp <- 5
x <- 0
y <- 0.13
sub[!c(head(sub >= x, bp), tail(sub <= y, -bp))]
# [1] -1.6505562 -0.4738839 -1.7976130 -1.4211210 0.1588875 0.1476671 0.9791739
c(head(sub >= x, bp), tail(sub <= y, -bp))
# [1] FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE