Tra*_*ter 8 r function missing-data na
我正在尝试编写一个将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 number of subscripts on matrix Called from: FUN(X[[i]], ...)
我已经尝试了这里找到的答案:将所有0值替换为NA,但它将我的所有列更改为数值.
Kon*_*lph 10
您可以直接索引符合逻辑条件的字段.所以你可以写:
df[is_empty(df)] = NA
Run Code Online (Sandbox Code Playgroud)
is_empty您的比较在哪里,例如df == "":
df[df == ""] = NA
Run Code Online (Sandbox Code Playgroud)
但请注意,is.null(df)这不会起作用,反正会很奇怪1.不过,我建议不要合并不同类型列的逻辑!相反,单独处理它们.
1你几乎不会NULL在一个表内遇到,因为只有在底层向量是a时才有效list.您可以使用此约束创建矩阵和data.frames,但之后is.null(df)永远不会TRUE因为NULL值被包装在列表中而被创建.
| 归档时间: |
|
| 查看次数: |
15422 次 |
| 最近记录: |