【发布时间】:2015-06-15 19:27:40
【问题描述】:
背景
我有一些财务数据(1.5 年 SP500 股票),我使用 data.table 包将其处理成宽格式。在 Datacamp 上完成整个 data.table 课程之后,我开始掌握基础知识,但是在搜索了几个小时之后,我不知道如何做到这一点。
问题
数据包含包含每只股票财务数据的列。我需要删除包含两个连续 NA 的列。
我的猜测是我必须使用rle()、lapply() 来查找连续值并使用DT[,x:= NULL]) 来删除列。
我读到rle() 不适用于 NA,因此我将它们改为 Inf。
我只是不知道如何组合这些功能,以便我可以有效地删除我拥有的 460 中的几列。
使用data.table 的答案会很棒,但任何运作良好的东西都非常感谢。
或者,我很想知道如何删除包含至少 1 个 NA 的列
示例数据
> test[1:5,1:5,with=FALSE]
date 10104 10107 10138 10145
1: 2012-07-02 0.003199 Inf 0.001112 -0.012178
2: 2012-07-03 0.005873 0.006545 0.001428 Inf
3: 2012-07-05 Inf -0.001951 -0.011090 Inf
4: 2012-07-06 Inf -0.016775 -0.009612 Inf
5: 2012-07-09 -0.002742 -0.006129 -0.001294 0.005830
> dim(test)
[1] 377 461
期望的结果
date 10107 10138
1: 2012-07-02 Inf 0.001112
2: 2012-07-03 0.006545 0.001428
3: 2012-07-05 -0.001951 -0.011090
4: 2012-07-06 -0.016775 -0.009612
5: 2012-07-09 -0.006129 -0.001294
PS。这是我的第一个问题,我已尝试遵守规则,如果需要更改任何内容,请告诉我。
【问题讨论】:
标签: r data.table