Почему я получаю значения NA после подмножества в R?

Знаете ли вы, почему я получаю значения NA после подмножества наблюдений в новый фрейм данных и как это решить? Вот как я действовал — не стесняйтесь, дайте мне знать о любых ошибках, которые я, возможно, сделал.

Мой фрейм данных LE2010. Я ранжировал явки в порядке возрастания и хотел бы выбрать первые 5 и последние 5 строк (с самой высокой и самой низкой явкой)

 head(LE2010)
      ward.name ward.code electorate votescast  turnout
 111   Haverstock E05000136       8621      3123 36.22550
 361   Courtfield E05000386       6407      2400 37.45903
 358     Brompton E05000383       5918      2362 39.91213
 365    Hans Town E05000390       6787      2722 40.10609
 370 Queen's Gate E05000395       6258      2565 40.98754
 363 Earl's Court E05000388       6514      2723 41.80227
 tail(LE2010)
  ward.name ward.code electorate votescast  turnout
 534 South   E05000559       7356      5589 75.97879
 535 Cheam   E05000560       7765      5929 76.35544
 499 Kew     E05000524       8212      6320 76.96055
 166 Southf. E05000191       8803      6803 77.28047
 99  Petts   E05000124      11000      8594 78.12727
 492 East    E05000517       7460      5871 78.69973

Затем я выбираю первые 5 и последние 5 строк (я не был уверен, как это сделать правильно, поэтому ошибка могла возникнуть отсюда...

#Select the first 5 first and 5 last rows
LE2010.2 <- LE2010[1:5, ][620:624, ]
LE2010.2
 ward.name ward.code electorate votescast turnout
NA        <NA>      <NA>         NA        NA      NA
NA.1      <NA>      <NA>         NA        NA      NA
NA.2      <NA>      <NA>         NA        NA      NA
NA.3      <NA>      <NA>         NA        NA      NA
NA.4      <NA>      <NA>         NA        NA      NA

Теперь значения в моем подмножестве являются NA... Есть идеи, почему и как это решить? Заранее извиняюсь, это вопрос новичка :)

Спасибо

Мелодия


person Mélody Barreau    schedule 30.04.2015    source источник


Ответы (2)


Объяснение почему ваш код не работает:

LE2010.2 <- LE2010[1:5, ][620:624, ]

LE2010[1:5, ] захватывает первые 5 строк LE2010. Это первое, что вы вводите, поэтому это подмножество выполняется первым. Когда вы добавляете скобки в конец, вы снова пытаетесь создать подмножество, но отправной точкой является уже созданное подмножество, поэтому вы пытаетесь получить строки с 620 по 624-ю из 5-строчного подмножества. Поскольку в нем всего 5 строк, возвращаются NA.

Как говорит @cory, LE2010[c(1:5, 620:624), ] будет работать, так как вы берете только одно подмножество. Другой способ сделать это будет

rbind(head(LE2010, 5), tail(LE2010, 5))

Мне нравится использовать tail, потому что вам не нужно знать, сколько строк, он просто выбирает с конца. Здесь я беру два подмножества и связываю их вместе, но оба подмножества ссылаются на исходный объект.

person Gregor Thomas    schedule 30.04.2015
comment
Отлично, это работает, И я понимаю, почему благодаря вам и Кори. Большое спасибо! - person Mélody Barreau; 30.04.2015

Попробуй это:

LE2010.2 <- LE2010[c(1:5, 620:624), ]
person cory    schedule 30.04.2015