我试图获取一列包含值和NA的数据,并用组中的最小值替换值。挑战在于,在这种情况下,我还没有找到使用group_by的方法,因为数据集中没有唯一的分组。
我要说的是:如果value列中的值是一个数字,请使用该数字,除非先前的值小于当前值。如果不是数字,则将值保留为NA。
我尝试了group_by,但意识到如上所述无法正常工作。然后我尝试了一个if_else,但是我认为这失败了,因为is.numeric没有向量化。
最终的数据框架是我要实现的目标。
示例数据
library(dplyr)
# Initial
initial <- structure(list(dates = structure(c(17532,17539,17546,17553,17560,17567,17574,17581,17588,17595,17602,17609,17616,17623,17630,17637,17644,17651,17658,17665,17672,17679
),class = "Date"),values = c(10,10,11,NA,20,21,22,30,31,NA)),class = "data.frame",row.names = c(NA,-22L))
# Final
final <- structure(list(dates = structure(c(17532,NA),desired = c(10,-22L))
此操作以及其他尝试均无效。我怀疑是因为is.numeric没有向量化。我也尝试了一些mutate_at版本,但也无法使其正常工作。
# Did not work
initial %>%
mutate(desired = ifelse(is.numeric(values),ifelse(is.numeric(lag(values)),lag(values),values),values))