【问题标题】:Turn NULL to NA in R在R中将NULL变为NA
【发布时间】: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[] &lt;- lapply(raw_data, as.character);raw_data[raw_data == "NULL"] &lt;- NA
  • 如果不是raw_data[is.null(raw_data)] &lt;- NA
  • 如果您的数据是从文件中导入的,并且您希望从一开始就将“NULL”设置为 NA,您可以定义 na.strings,例如rawData &lt;- read.table("rawdatafile.csv", na.strings = c("NA", "NULL"), header=TRUE)
  • 我的数据是从github下载的tsv

标签: r dataframe nan missing-data


【解决方案1】:

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

我加了

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-20
    • 2018-02-24
    • 2021-07-02
    • 1970-01-01
    • 2021-10-15
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多