寻找一个快速简单的解决方案来解决我只能通过循环来解决的问题.我有一个ID向量,看起来像这样:
id<-c(NA,NA,1,1,1,NA,1,NA,2,2,2,NA,3,NA,3,3,3)
Run Code Online (Sandbox Code Playgroud)
落在一个数字序列(id[6], id[14])之间的NA 需要被该数字替换.然而,不满足这种条件的NA(两个不同数字的序列之间的那些)需要保持单独(即id[1],id[2],id[8],id[12]).因此,目标向量是:
id.target<-c(NA,NA,1,1,1,1,1,NA,2,2,2,NA,3,3,3,3,3)
Run Code Online (Sandbox Code Playgroud)
循环遍历每个值并不困难,但我希望对许多很长的向量做这个,并希望有一个更简洁的解决方案.谢谢你的任何建议.
这似乎有效.想法是使用zoo::na.locf以NA正确填充s然后NA在它们在不同数字之间插入s
id.target <- zoo::na.locf(id, na.rm = FALSE)
id.target[(c(diff(id.target), 1L) > 0L) & is.na(id)] <- NA
id.target
## [1] NA NA 1 1 1 1 1 NA 2 2 2 NA 3 3 3 3 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |