1
这是一个微不足道的问题,但我似乎没有找到这个完美的解决方案。 (不排除NA的第一个并再次包括它们)。所以我正在寻找一些想法,而不需要NA的排除。标签开始与NA的一个序列号
我想分别用2
和1
来标记0 and 1
序列的开始,并用0替换NA以及0和1的其余序列。
rle
函数在这里有用吗? Base R解决方案将受到欢迎。
实施例:
x <- c(rep(NA,10),rep(1,5),rep(NA,5),rep(1,10),rep(NA,3),rep(0,7),rep(NA,15),rep(1,9))
r <- c(0,diff(x)); r[r %in% -1] <- 2
从该样本数据:
x
[1] NA NA NA NA NA NA NA NA NA NA 1 1 1 1 1 NA NA NA NA NA 1 1 1 1 1 1 1 1 1 1 NA NA NA 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1 1 1 1 1 1 1 1 1
希望的输出:
[1] 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
将是有一个基础R溶液? (只是问问)。谢谢。 – Maximilian
@Maximilian我们可以使用'rle'。 – akrun
'rle'解决方案会很棒! :)任何基础R解决方案当然会做。 – Maximilian