我有一个大的data.table,在其大约200k行和200列中分散了许多缺失值.我想尽可能有效地将这些NA值重新编码为零.
我看到两个选项:
1:转换为data.frame,并使用类似这样的东西
2:某种很酷的data.table子设置命令
我会对类型1的相当有效的解决方案感到满意.转换为data.frame然后返回data.table不会花费太长时间.
我正在尝试编写一个将Null值变为NA的函数.我的一个专栏的摘要如下所示:
a b
12 210 468
Run Code Online (Sandbox Code Playgroud)
我想将12个空值更改为NA.我还有一些其他因素列,我想将Null值更改为NA,所以我从这里和那里借了一些东西来提出这个:
# change nulls to NAs
nullToNA <- function(df){
# split df into numeric & non-numeric functions
a<-df[,sapply(df, is.numeric), drop = FALSE]
b<-df[,sapply(df, Negate(is.numeric)), drop = FALSE]
# Change empty strings to NA
b<-b[lapply(b,function(x) levels(x) <- c(levels(x), NA) ),] # add NA level
b<-b[lapply(b,function(x) x[x=="",]<- NA),] # change Null to NA
# Put the columns back together
d<-cbind(a,b)
d[, names(df)]
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
Run Code Online (Sandbox Code Playgroud)> foo<-nullToNA(bar) Error in x[x == "", ] <- NA : incorrect …
我有一个a包含5个变量的数据集,并希望像这样过滤它:
a1 <- a %>% filter(var_1 != 1 , var_2 != 1 , var_3 != 1 , var_4 != 1 , variable_5 != 1)
Run Code Online (Sandbox Code Playgroud)
我想知道是否存在这样的(伪代码):
a1 <- a %>% filter(anyvariable != 1)
Run Code Online (Sandbox Code Playgroud)
换句话说,我想摆脱价值为1的所有行,无论它出现在哪里.1只是一个随机数.它可能是9,99,或其他任何东西!谢谢!
这是我到目前为止已经完成的数据是数字数据类型
if (is.na(data) || attribute==0){replace(data,NA)}
Run Code Online (Sandbox Code Playgroud)
它给了我错误信息
替换(属性,NA)错误:缺少参数“值”,没有默认值
可能重复:
将R中的所有0值替换为NA
离开这个问题.R中是否有类似的功能,x[is.na(x)] <- 0除了它会将矩阵中的每个零都改变为NA?
r ×5
data.table ×1
dataframe ×1
dplyr ×1
function ×1
matrix ×1
missing-data ×1
na ×1
performance ×1