在 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.table
或 read_tsv
。然后这就成功了,并将我的 NULL 值更改为 NA。
我正在尝试将数据集中的所有 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.table
或 read_tsv
。然后这就成功了,并将我的 NULL 值更改为 NA。