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