【发布时间】:2017-11-11 15:21:32
【问题描述】:
我有一个巨大的data.frame,其中包含大约 200 个变量,每个变量由一列表示。不幸的是,数据来自格式不正确的数据转储(因此无法修改),它表示缺失值和零为0。
一个月内每5分钟观察一次数据,只有0s的一天可以合理地认为是计数器没有工作的一天,从而得出结论,那些0s实际上是NAs。
我想在任何时候查找(并删除)至少有 288 个连续 0s 的列。或者,更一般地说,我们如何从包含 >=k 个连续 0s 的 data.frame 中删除列?
我对 R 比较陌生,如果有任何帮助,我将不胜感激。谢谢!
编辑:这是一个可重现的示例。考虑到 k=4,我想删除列 A 和 B(但不是 C,因为 0s 不是连续的)。
df<-data.frame(A=c(4,5,8,2,0,0,0,0,6,3), B=c(3,0,0,0,0,6,8,2,1,0), C=c(4,5,6,0,3,0,2,1,0,0), D=c(1:10))
df
A B C D
1 4 3 4 1
2 5 0 5 2
3 8 0 6 3
4 2 0 0 4
5 0 0 3 5
6 0 6 0 6
7 0 8 2 7
8 0 2 1 8
9 6 1 0 9
10 3 0 0 10
【问题讨论】:
-
您介意发布您的数据的简短格式吗?看看here。你会更容易找到帮助
-
如果您阅读 @DJJ 链接并提供示例数据集,我可以向您展示如何使用
sapply对您的数据使用该函数。 -
@DJJ 添加示例数据
-
@Masoud 接受了您的回答。谢谢
标签: r dataframe data-cleaning