Получить строки, которые имеют пропущенные значения между не пропущенными значениями - PullRequest
0 голосов
/ 24 октября 2018

У меня широкий набор данных со строками, представляющими наблюдения, и столбцами, представляющими месяцы.Я ищу подмножество случаев, в которых отсутствуют значения между столбцами, в которых отсутствуют значения.

Не все значения присутствуют, поэтому могут быть случаи с конечными или ведущими пропущенными значениями, которые я не хотел бы подмножество.Например, из следующего набора данных:

ID    Month1    Month2    Month3    Month4    Month5    Month6    Month7
1     NA        NA        100       100       NA        200       300
2     300       300       300       400       500       NA        NA
3     150       150       NA        NA        150       150       150
4     NA        NA        NA        NA        NA        NA        100
5     NA        NA        NA        100       100       NA        NA

Я бы хотел выделить только первую и третью строки, поскольку в них есть пропущенные значения между столбцами с пропущенными значениями.

ID    Month1    Month2    Month3    Month4    Month5    Month6    Month7
1     NA        NA        100       100       NA        200       300
3     150       150       NA        NA        150       150       150

Есть ли способ сделать это в R без преобразования в длинный формат?

1 Ответ

0 голосов
/ 24 октября 2018
df[grep("\\d(NA)+\\d", apply(df[,2:8],1,paste0, collapse="")),]

Результат:

  ID Month1 Month2 Month3 Month4 Month5 Month6 Month7
1  1     NA     NA    100    100     NA    200    300
3  3    150    150     NA     NA    150    150    150

apply создает одну строку содержимого столбцов месяцев для каждой строки.Затем grep ищет случаи NA (или нескольких NA), заключенные в цифры.Это дает вектор индексов, который передается в подмножество df.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...