【发布时间】:2020-01-02 20:01:32
【问题描述】:
我一直在使用以下代码来删除具有太多NA 的变量:
DT <- DT[,colMeans(is.na(DT)) <= 0.1]
但是,在 data.table 上,这给出了:
library(data.table)
set.seed(1)
DT <- data.table(panelID = sample(50,50), # Creates a panel ID
Country = c(rep("Albania",30),rep("Belarus",50), rep("Chilipepper",20)),
some_NA = sample(0:5, 6),
some_NA_factor = sample(0:5, 6),
Group = c(rep(1,20),rep(2,20),rep(3,20),rep(4,20),rep(5,20)),
Time = rep(seq(as.Date("2010-01-03"), length=20, by="1 month") - 1,5),
norm = round(runif(100)/10,2),
Income = round(rnorm(10,-5,5),2),
Happiness = sample(10,10),
Sex = round(rnorm(10,0.75,0.3),2),
Age = sample(100,100),
Educ = round(rnorm(10,0.75,0.3),2))
DT [, uniqueID := .I] # Creates a unique ID
DT[DT == 0] <- NA # https://stackoverflow.com/questions/11036989/replace-all-0-values-to-na
DT$some_NA_factor <- factor(DT$some_NA_factor)
> DT <- DT[,colMeans(is.na(DT)) <= 0.1]
> DT
panelID Country some_NA some_NA_factor Group Time norm Income Happiness Sex Age
TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
Educ uniqueID
TRUE TRUE
现在我显然可以每次都将我的数据集更改为数据帧,但由于我使用大型数据集,data.table 解决方案会更有效。正确的data.table 方法是什么?
【问题讨论】:
标签: r data.table na