【发布时间】:2019-04-05 14:15:32
【问题描述】:
我对 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)?
【问题讨论】:
-
你可以看看
?cummax -
实际上,如果我想排除 NA,这很有效。还没有发现我如何能够保持 NA 值,但无论如何这并不太公平。非常感谢!