r - 如果先验值 > 值,则用向量中的先验值替换值
问题描述
我对 R 很陌生,无法解决以下问题:在我的数据帧 df 中,如果向量中的值低于前一行中的值,我需要将向量中的值替换为同一向量中的先前值。它需要按ID分组。
示例 DF 如下所示:
ID x
1 2
1 2
1 4
1 2
1 1
2 不适用
2 4
2 2
我希望它看起来像这样:
ID x
1 2
1 2
1 4
1 4
1 4
2 不适用
2 4
2 4
我尝试了以下代码:
df <- df %>%
group_by(ID) %>%
mutate(x= replace(x, x< lag(x), lag(x)))`
但我得到这个错误:
mutate_impl(.data, dots) 中的错误:评估错误:下标分配中不允许使用 NA。
我该如何解决这个问题(最好用dplyr
)?
解决方案
我会尝试:
df <- df %>%
filter(!is.na(x)) %>%
mutate(x= if_else(x< lag(x), lag(x), x))
希望对你有用!