繁体   English   中英

在R中一次清理Data Frame的所有列

[英]Cleaning all columns of Data Frame at once in R

我正在尝试编写一行或两行代码,以查看数据帧中的每一列是否包含任何空白或非数字值,例如N/ANaN ,并将其替换为0

这里有一些尝试:

给定一个数据框= df,总列数为n,我尝试过:

df[,c(1:n)]<-sub("NaN","0",df[,c(1:n)])

这是一个尝试过滤整个数据帧的尝试:

df[df[,c(1:n)]=='NaN',"c(1:n)"]

我的目标是使用for循环就可以做到这一点。

您可以使用is.finite()

 df[!is.finite(df)] <- 0

尝试df[is.na(df)] <- 0df[df == NaN] <- 0

如果使用data.table包,则可以使用.SDcols进行此操作。 拥有数据会更干净,但是有了一些随机数据,我们可以复制它们。

library(data.table)
DT <- data.table(a = rep(c(1,NA),20),
           b = rep(c(NA,2),20))

DT[,lapply(.SD,function(x) ifelse(is.na(x), 0, x))]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM