我对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
)?
答案 0 :(得分:0)
我会尝试:
df <- df %>%
filter(!is.na(x)) %>%
mutate(x= if_else(x< lag(x), lag(x), x))
希望对您有用!