我这里有一张股票价格表:
https://drive.google.com/file/d/1S666wiCzf-8MfgugN3IZOqCiM7tNPFh9/view?usp=sharing
有些列有 NA,因为该公司不存在(直到后来),或者该公司已倒闭。
我想要做的是:选择没有 NA 的列。我使用 data.table 因为它更快。这是我的工作代码:
example <- fread(file = "example.csv", key = "date")
example_select <- example[,
lapply(.SD,
function(x) not(sum(is.na(x) > 0)))
] %>%
as.logical(.)
example[, ..example_select]
Run Code Online (Sandbox Code Playgroud)
是否有更好(更少行)的代码来执行相同的操作?谢谢你!
在?data.table帮助页面中,关于参数,.SDcols您可以发现可以使用谓词函数或其否定,所以最简单的解决方案是:
example[, .SD, .SDcols = !anyNA]
Run Code Online (Sandbox Code Playgroud)
尝试:
example[,lapply(.SD, function(x) {if(anyNA(x)) {NULL} else {x}} )]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |