Как вернуть список идентификаторов на основе пропущенных значений другой переменной? - PullRequest
1 голос
/ 21 апреля 2020

Прошло много времени с тех пор, как я использовал R, поэтому извиняюсь за то, что задал, вероятно, такой базовый c вопрос: s

У меня есть переменная, в которой есть данные в базовой линии, 4 месяца и 12 месяцев для того же идентификаторы. По сути, я пытаюсь выяснить, в каких идентификаторах отсутствуют данные за 4 месяца, чтобы я мог удалить эти идентификаторы из всего набора данных.

   ID     Baseline  4MOS     12MOS
123_ABC   53.5       NA       NA
456_DEF   45.1       32.5     12.2
789_GHI   45.4       NA       NA
923_JKL   88.4       11.1     23.1
734_BBB   45.4       20.1     NA
343_CHF   22.1       16.1     NA

Я дошел до определения номера строки, где отсутствуют данные за 4 месяца:

clean <- which(is.na(df$4MONTHS))

Это код, который я попытался впоследствии попытаться вернуть идентификаторы для меня, но он только что дал мне сообщение «Ошибка: попытка применить не-функцию»:

clean <- list(df$ID(which(is.na(df$4MOS))))

Рад ценить любую помощь в отношении этого:

1 Ответ

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

РЕДАКТИРОВАТЬ :

Чтобы получить идентификаторы с NA с (здесь мы предполагаем, что все NA не просто какие-либо NA. В последнем случае используйте anyNA вместо ):

df %>% 
   group_by(ID) %>% 
   filter(all(is.na(X4MOS))) %>% 
   pull(ID)
[1] "123_ABC" "789_GHI"

base (без группировки):

df[is.na(df["X4MOS"]),"ID"]
[1] "123_ABC" "789_GHI"

ORIGINAL : Возвращает, где все не NA

A dplyr решение:

df %>% 
   group_by(ID) %>% 
   filter(!all(is.na(X4MOS)))
# A tibble: 4 x 4
# Groups:   ID [4]
  ID      Baseline X4MOS X12MOS
  <chr>      <dbl> <dbl>  <dbl>
1 456_DEF     45.1  32.5   12.2
2 923_JKL     88.4  11.1   23.1
3 734_BBB     45.4  20.1   NA  
4 343_CHF     22.1  16.1   NA 

С base (без группировки):

df[!is.na(df["X4MOS"]),]
       ID Baseline X4MOS X12MOS
2 456_DEF     45.1  32.5   12.2
4 923_JKL     88.4  11.1   23.1
5 734_BBB     45.4  20.1     NA
6 343_CHF     22.1  16.1     NA

Данные:

df <- structure(list(ID = c("123_ABC", "456_DEF", "789_GHI", "923_JKL", 
"734_BBB", "343_CHF"), Baseline = c(53.5, 45.1, 45.4, 88.4, 45.4, 
22.1), X4MOS = c(NA, 32.5, NA, 11.1, 20.1, 16.1), X12MOS = c(NA, 
12.2, NA, 23.1, NA, NA)), class = "data.frame", row.names = c(NA, 
-6L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...