【发布时间】:2020-10-29 06:49:09
【问题描述】:
我正在尝试将数据集中的所有 NULL 值转换为 NA。总之
问题说明
我的数据集如下所示:
我注意到的一件事是,当我尝试查找空值的数量时,它会显示我的数据集中的 NA 值的数量,不包括 NULL 值。我想将 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是一个字符串。raw_data[] <- lapply(raw_data, as.character);raw_data[raw_data == "NULL"] <- NA -
如果不是
raw_data[is.null(raw_data)] <- NA -
如果您的数据是从文件中导入的,并且您希望从一开始就将“NULL”设置为 NA,您可以定义
na.strings,例如rawData <- read.table("rawdatafile.csv", na.strings = c("NA", "NULL"), header=TRUE) -
我的数据是从github下载的tsv
标签: r dataframe nan missing-data