如何在R表中正确地将NULL变量转换为0

问题描述 投票:0回答:3

我有一个表,其中某些变量缺少数据(记录为 NULL) - 我想将其中一些缺少的单元格转换为 0,但由于某种原因,我似乎无法获得正确的语法。我最初的方法是这样做:

b<- eval(parse(text=paste(table_full$','column_name1',sep='')))
b[which(is.na(b))]<-0
b[which(b=='NULL')]<-0

然后将数据保存到文件中,但是 - 这仍然会导致输出文件中丢失数据并出现警告消息,例如:

In `[<-.factor`(`*tmp*`, which(is.na(b)), value = 0) :
  invalid factor level, NA generated

或者,我尝试过以下形式的事情:

b[which(is.na(as.numeric(as.character(b))))]<-0

但这并没有解决问题。

我对 R 比较陌生,无法准确理解我在这里做错了什么。预先感谢!

r eval
3个回答
3
投票

由于 R 倾向于不将其值存储为“NULL”,因此我将冒险假设您将其作为文本导入,更具体地说作为因子导入。尝试重新导入 w

stringsAsFactors = FALSE
,然后使用您的代码:

b[b=='NULL'] <- 0

更优雅的方法是在读取数据时使用

na.strings=c("NULL")


0
投票

is.na() 返回 TRUE 或 FALSE。尝试 b[which(is.na(b) == T)]<-0 instead


0
投票

这对于数据框中的列来说很容易:

df$column = ifelse(is.null(df$column), 0, df$columns)

我使用的是 0,但你可以对字符串做任何事情。您可以使用日期来完成,但您需要合法的数据格式,

© www.soinside.com 2019 - 2024. All rights reserved.