如果先前值>值

时间:2019-04-05 14:15:32

标签: r replace dplyr lag

我对R很陌生,无法解决以下问题: 在我的数据帧df中,如果矢量中的值小于前一行中的值,则需要用相同矢量中的先有值替换矢量中的值。需要按ID分组。

DF示例如下:

ID x
1 2
1 2
1 4
1 2
1 1
2 NA
2 4
2 2

我希望它看起来像这样:

ID x
1 2
1 2
1 4
1 4
1 4
2 NA
2 4
2 4

我尝试了以下代码:

df <- df %>%
  group_by(ID) %>%
  mutate(x= replace(x, x< lag(x), lag(x)))`

但我收到此错误:

  

mutate_impl(.data,点)中的错误:     评估错误:下标作业中不允许使用NA。

我该如何解决(最好使用dplyr)?

1 个答案:

答案 0 :(得分:0)

我会尝试:

df <- df %>%
  filter(!is.na(x))  %>%
  mutate(x= if_else(x< lag(x), lag(x), x))

希望对您有用!