R 如何删除2个以上的连续NA';在一个专栏里?
我不熟悉R,在我的数据帧中有col1(“时间戳”),col2(“值”)。我必须删除col2中超过2个连续NA的行。我的数据框看起来像下面的一个R 如何删除2个以上的连续NA';在一个专栏里?,r,datetime,duplicates,missing-data,R,Datetime,Duplicates,Missing Data,我不熟悉R,在我的数据帧中有col1(“时间戳”),col2(“值”)。我必须删除col2中超过2个连续NA的行。我的数据框看起来像下面的一个 Timestamp | values -----------|-------- 2011-01-02 | 2 2011-01-03 | 3 2011-01-04 | NA 2011-01-05 | 1 2011-01-06 | NA 2011-01-07 | NA 2011-01-08 | 8 2011
Timestamp | values
-----------|--------
2011-01-02 | 2
2011-01-03 | 3
2011-01-04 | NA
2011-01-05 | 1
2011-01-06 | NA
2011-01-07 | NA
2011-01-08 | 8
2011-01-09 | 6
2011-01-10 | NA
2011-01-11 | NA
2011-01-12 | NA
2011-01-13 | 2
我想根据第二列删除2个以上重复的行。预期产出-
Timestamp | values
-----------|--------
2011-01-02 | 2
2011-01-03 | 3
2011-01-04 | NA
2011-01-05 | 1
2011-01-06 | NA
2011-01-07 | NA
2011-01-08 | 8
2011-01-09 | 6
2011-01-13 | 2
我正在寻找解决方案,提前谢谢。您可以使用游程编码功能
rle
。我假设数据已经按日期排序
r <- rle(is.na(df$values)) # check runs of NA in value column
df[!rep(r$values & r$lengths > 2, r$lengths),] # remove runs of >2 length
r2,r$length),]#删除长度大于2的运行
您可以使用以下一行代码:
Df[!duplicated(Df$column),]
这里是另一个使用
data.table
中的rleid
的选项。将“data.frame”转换为“data.table”(setDT(df1)
),按“values”的运行长度id分组,我们得到行索引(.I
),其中行数大于2(.N>2
)并且(&
)所有的“value”都是“NA”。提取索引($V1
)以子集原始数据集的行
library(data.table)
setDT(df1)[df1[, .I[!(.N >2 & all(is.na(values)))], rleid(is.na(values))]$V1]
# Timestamp values
#1: 2011-01-02 2
#2: 2011-01-03 3
#3: 2011-01-04 NA
#4: 2011-01-05 1
#5: 2011-01-06 NA
#6: 2011-01-07 NA
#7: 2011-01-08 8
#8: 2011-01-09 6
#9: 2011-01-13 2
日期重要吗?(他们必须是连续的吗?)是的,他们是连续的,但删除日期不是问题。谢谢你,这让我的工作变得简单。哦,如果日期超过两个,你想删除吗!好啊