我有一个表,其中某些变量缺少数据(记录为 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 倾向于不将其值存储为“NULL”,因此我将冒险假设您将其作为文本导入,更具体地说作为因子导入。尝试重新导入 w
stringsAsFactors = FALSE
,然后使用您的代码:
b[b=='NULL'] <- 0
更优雅的方法是在读取数据时使用
na.strings=c("NULL")
。
is.na() 返回 TRUE 或 FALSE。尝试 b[which(is.na(b) == T)]<-0 instead
这对于数据框中的列来说很容易:
df$column = ifelse(is.null(df$column), 0, df$columns)
我使用的是 0,但你可以对字符串做任何事情。您可以使用日期来完成,但您需要合法的数据格式,