在 R 中将 NULL 转为 NA

Turn NULL to NA in R

我正在尝试将数据集中的所有 NULL 值转换为 NA。简而言之

问题解释

我的数据集如下所示:

我注意到的一件事是,当我尝试查找空值的数量时,它显示了我的数据集中不包括 NULL 值的 NA 值的数量。我想将 NULL 值转换为 NA 以删除它们。

所以我计算了完整数据集中缺失值的数量,然后在列中计算为

> dim(raw_data)
[1] 80983    16
> # Count missing values in entire data set
> table(is.na(raw_data))

  FALSE    TRUE 
1247232   48496 
> # Count na 's column wise
> na_count <-sapply(raw_data, function(y) sum(length(which(is.na(y)))))
> na_count <- data.frame(na_count)
> na_count
                     na_count
Merchant_Id                 1
Tran_Date                   1
Military_Time               1
Terminal_Id_Key             1
Amount                      1
Card_Amount_Paid            1
Merchant_Name               1
Town                        1
Area_Code                   1
Client_ID               48481
Age_Band                    1
Gender_code                 1
Province                    1
Avg_Income_3M               1
Value_Spent                 1
Number_Spent                1

如您所见,它没有将 NULL 显示为 NA,因此我尝试将其转换为:

> # Turn Null to NA
> temp_data <- raw_data
> 
> temp_data[temp_data == ''] = NA

Error in as.POSIXlt.character(x, tz, ...) : 
  character string is not in a standard unambiguous format

我也试过了

> # Turn Null to NA
> temp_data <- raw_data
> temp_data[temp_data == 'NULL'] = NA
Error in as.POSIXlt.character(x, tz, ...) : 
  character string is not in a standard unambiguous format

但是我收到上面的错误。接下来是下面的最后一个(更好,因为我没有错误,但我的数据集中仍然有 NULL 值)。

> raw_data[is.null(raw_data)] <- NA
> table(is.na(raw_data))

  FALSE    TRUE 
1247232   48496

您能否建议处理此错误的方法?

我也尝试删除日期,但当我再次尝试删除 NULL 值时遇到了这个不同的错误:

> df <- raw_data
> 
> df1 <- transform(df, date = as.Date(df$Tran_Date), time = format(df$Tran_Date, "%T"))
> 
> df1[df1 == NULL] = NA
Error in matrix(if (is.null(value)) logical() else value, nrow = nr, dimnames = list(rn,  : 
  length of 'dimnames' [2] not equal to array extent

这解决了我的问题。而不是将 NULL 值更改为 NA。我从 github 帐户导入值作为 NA 值。

我加了

na = c("","NA","NULL",NULL)

我从 readr 包导入参数 read.tableread_tsv。然后这就成功了,并将我的 NULL 值更改为 NA。