Превратите NULL в NA в R - PullRequest
1 голос
/ 08 июля 2020

Я пытаюсь преобразовать все значения 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

1 Ответ

0 голосов
/ 10 июля 2020

Это решило мою проблему. Вместо изменения значений NULL на NA. Я импортировал значения из учетной записи github как значения NA.

Я добавил

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

в свой аргумент импорта read.table или read_tsv из readr пакет. Затем это помогло и изменило мои значения NULL на NA.

...