信号所有值降至最小值之前的平均值

时间:2019-03-28 07:38:30

标签: r

我有以下数据:我需要取所有值的平均值,直到其降至最小值,如下图所示。我需要对突出显示区域(红色)中的所有这些值取平均值

problem illustration

Sample data of signal:
3
3.1
3
3.2
3
3.1
3.2
3
3
3.05
3.25
3.21
3.2
0.4
0.48
0.51
0.65
0.92
1.4
2
3.2
3
3.5

2 个答案:

答案 0 :(得分:2)

您可以找到最小值和子集值的componentDidMount() { const { userData } = this.props.location.state // const user = JSON.parse(userData); this.setState({ user: userData }); if (userData) { this.setState({ isLogin: true }); } console.log(userData); console.log(user); } ,直到该点为止,然后像这样计算index

mean

或将dat <- c(3, 3.1, 3, 3.2, 3, 3.1, 3.2, 3, 3, 3.05, 3.25, 3.21, 3.2, 0.4, 0.48, 0.51, 0.65, 0.92, 1.4, 2, 3.2, 3) mean(dat[seq(max(which.min(dat)[1]-1, 1))]) [1] 3.100769 用作:

dplyr

答案 1 :(得分:1)

由于我们需要在下降到最小值之前求出点的平均值,因此需要创建一个逻辑向量(v1 <= min(v1)),获得累积最大值,将TRUE转换为NA,并将FALSE转换为1,并乘以这些点并以mean为真获得na.rm

with(df1, mean(v1 * NA^(cummax(v1 <= min(v1))), na.rm = TRUE))
#[1] 3.100769

数据

df1 <- structure(list(v1 = c(3, 3.1, 3, 3.2, 3, 3.1, 3.2, 3, 3, 3.05, 
 3.25, 3.21, 3.2, 0.4, 0.48, 0.51, 0.65, 0.92, 1.4, 2, 3.2, 3, 
  3.5)), class = "data.frame", row.names = c(NA, -23L))