假设一个向量:
vec = c(NA,NA,1,NA,NA,NA,1,NA,NA,0,NA,NA,0,NA,NA,0,NA,NA,1,NA,NA,1,NA,NA,0,NA,0)
我想得到:
vec = c(NA,NA,1,NA,NA,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,0,NA,NA)
我已经尝试过使用for循环进行if检查,以检查该值是否等于先前的非NA,但是当重复多次时它不起作用。
将向量中的重复项删除到下一个值也不起作用,因为我想保留我的资产净值。
用途duplicated
:
vec[duplicated(vec, incomparables=NA)] <- NA
您可以incomparables
在示例中省略该参数:
vec[duplicated(vec)] <- NA
根据文档,这可能会更快,但是您需要自己对其进行基准测试。
编辑:
经过澄清:
vec <- c(NA,NA,1,NA,NA,NA,1,NA,NA,NA,NA,0,NA,NA,0,NA,NA,0,NA,NA,NA,1,NA,NA,1,NA,NA,0,NA,0)
vec2 <- c(NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,0,NA,NA)
tmp <- vec[!is.na(vec)]
tmp[c(FALSE, diff(tmp)==0)] <- NA
vec[!is.na(vec)] <- tmp
identical(vec, vec2)
#[1] TRUE
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句