Как избавиться от странных строк NA в каждой ячейке информационного кадра - PullRequest
0 голосов
/ 10 октября 2019

У меня есть база данных как фрейм данных с именем «data», которая состоит из 500 объектов и 2 переменных. на самом деле

dim(data)

возвращает

[1] 500  2

и

str(data)

возвращает

    'data.frame':   500 obs. of  2 variables:
    $ Diagnosis          : chr  "D1" "D2" "D3" "D4" ...
    $ Type               : Factor w/ 8 levels "T1","T2",..: 6 4 1 6 1 4 4 4 5 5 ...

Но, когда я пытаюсь получитьзначение «Тип» для определенного «Диагноза», скажем, «D4», в дополнение к значению «Тип» появляются 11 странных значений NA. Фактически, кажется, что в каждой ячейке этого фрейма данных есть вектор из 12 значений, из которых 11 являются NA, вышедшими из воздуха. В свою очередь,

data[data$Diagnosis=='D4','Type']

возвращает:

    [1] <NA>         <NA>         <NA>         <NA>         <NA>         <NA>        
    [7] <NA>         <NA>         <NA>         <NA>         <NA>         T6

, интересно:

data[data$Diagnosis=='D4',]

, возвращает:

    Diagnosis         Type
NA              <NA>         <NA>
NA.1            <NA>         <NA>
NA.2            <NA>         <NA>
NA.3            <NA>         <NA>
NA.4            <NA>         <NA>
NA.5            <NA>         <NA>
NA.6            <NA>         <NA>
NA.7            <NA>         <NA>
NA.8            <NA>         <NA>
NA.9            <NA>         <NA>
NA.10           <NA>         <NA>
503              D4           T6

Кадр данных созданв Excel, а затем я импортировал его в R studio, с тех пор я сделал много изменений в фрейме данных.

У меня есть два вопроса:

  1. Откуда пришли эти NA икак я могу их удалить? На самом деле я хочу, чтобы data[data$Diagnosis=='D4','Type']

вернул:

[1] T6

и:

data[data$Diagnosis=='D4',]

для повторной настройки:

                   Diagnosis       Type  
  [row number]         D4           T6
  • Я не могу использовать omit.na (data) complete.cases () для всего фрейма данных, так как у меня есть несколько законных NA, которые я не хочу удалять

  • как я могу установить более одного значения для ячейки фрейма данных. давайте предположим, что 1 человек имеет 2 сопутствующих диагноза. Как я могу сохранить оба значения «D1» и «D2» в «диагностике» 1 # человека?

1 Ответ

0 голосов
/ 10 октября 2019

Я думаю, что это объяснение будет полезно. Как видите, столбец Type - это не character, это factor, поэтому в R за кадром он рассматривается как categorical field. Поскольку вы можете видеть, что уровни отображаются как целые числа, так что если выпопытаться получить доступ к значению, которое возвращает уровень, а не значение. Вам нужно сначала преобразовать столбец Type в символы. После этого выполните операцию

df$Type <- as.character(df$Type)
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...