Как заменить или удалить данные из фрейма данных, который имеет «?» в этом в R? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть набор данных, где немного данных "?" (См. Изображение ниже для справки)

рабочий класс имеет один "?" в этом примере данных

age         workclass fnlwgt     education education_num         marital_status
39         State-gov  77516     Bachelors            13          Never-married
31           Private  45781       Masters            14          Never-married
42           Private 159449     Bachelors            13     Married-civ-spouse
30           Private 188146       HS-grad             9     Married-civ-spouse
30           Private  59496     Bachelors            13     Married-civ-spouse
44           Private 343591       HS-grad             9               Divorced
44           Private 198282     Bachelors            13     Married-civ-spouse
32      Self-emp-inc 317660       HS-grad             9     Married-civ-spouse
17                 ? 304873          10th             6          Never-married
28           Private 377869  Some-college            10     Married-civ-spouse
38  Self-emp-not-inc 120985       HS-grad             9     Married-civ-spouse
40       Federal-gov  56795       Masters            14          Never-married

образец моего набора данных Я пробовал фильтр, где и несколько других соответствующих функций, но он не захватывает? в строке или int.

Я новичок в языке R и не могу найти решение для этого.

Я хочу получить количество данных, которые имеют "?" в нем, а затем на основании подсчета решите удалить строки или заполнить его какими-либо значимыми данными.

ОБНОВЛЕНИЕ :::

I данные были "?" скорее, чем "?". Не мог разобрать, посмотрев на него, как только я получил эту информацию, смог справиться с этим. Это была человеческая ошибка, а не данные / код, которые я пытался: D

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Предполагая, что ваш фрейм данных называется "df", вы можете получить счетчик, выполнив: sum(df$workclass == "?")

Я хотел бы рассмотреть преобразование этих значений в правильные значения NA, например, запустив: df$workclass <- ifelse(df$workclass == "?", NA, df$workclass).

Как только вы конвертируете их в NA, вы можете, например, удалить их с помощью na.omit(df) или использовать методы импутации, такие как импутация режима или KNN-импутация, чтобы назвать несколько. Вы можете прочитать больше о методах вменения и обработке пропущенных значений здесь: https://towardsdatascience.com/all-about-missing-data-handling-b94b8b5d2184

0 голосов
/ 15 апреля 2020

Для удаления:

updated_df = df [-which (df $ workclass == "?"),]

Заменить: Допустим, с "a"

df [which (df $ workclass == "?"), "Workclass"] = "a"

...