用期望值替换零 数据

问题描述

我希望使用NaN删除具有4个或更多连续值0的所有0值。您的帮助将不胜感激。

我有以下数据:

driver.findelement(By.(locator(locator details)).sendKeys(Keys.ARROW-DOWN,Keys.RETURN)

我想要得到什么:

 A B C
 1 2 0
 0 8 0
 0 0 0
 0 0 0
 0 0 8
 0 4 9

解决方法

我们可以使用rle来做到这一点。用lapply循环遍历各列,在逻辑向量(rle)上使用x==0返回相同的相邻元素(“值”及其lengths),将不具有lengths大于或等于4的“值”分配为FALSE,用inverse.rle取消列出列表,并将其用于replace将“ x”的值分配给{ {1}}

NA

或带有df1[] <- lapply(df1,function(x) { i1 <- inverse.rle(within.list(rle(x == 0),values[!(values & lengths >=4)] <- FALSE)) replace(x,i1,NA) }) df1 # A B C #1 1 2 NA #2 NA 8 NA #3 NA 0 NA #4 NA 0 NA #5 NA 0 8 #6 NA 4 9

的选项
rleid

数据

library(data.table)
library(dplyr)
df1 %>% 
   mutate(across(everything(),~ replace(.,. == 0 &
            ave(.,rleid(.),FUN = length) >= 4,NA) ))