Как бороться с отсутствующими данными в этом контексте? - PullRequest
1 голос
/ 25 октября 2019

Я все еще новичок в R, и мне было интересно, может ли кто-нибудь посоветовать лучший способ справиться с отсутствующими данными, с моей проблемой с некоторыми данными о состоянии здоровья:

У меня есть набор данных, из которых я хочуЧтобы отработать класс «АКИ», «АКИ» был автоматически отработан до определенного момента истории. Тем не менее, все до отключения должно быть рассчитано вручную. Если Postop_creat в 1,5 раза превосходит Preop_Creat, то это будет AKI класса 1, а если 2 раза, то класс 2 и 3 - это класс 3, в противном случае он равен нулю.

 Preop_Creat Postop_creat AKI
309          90         <NA>   0
310          83         <NA>   0
311          71         <NA>   0
312          79         <NA>   0
313          70           93  NA
314          78           82  NA

Итак, какВы можете видеть, у меня есть несколько строк, которые уже имеют данные "AKI", но без значений Postop_creat и наоборот.

Ниже приведен пример чуть большего размера с использованием dput()

structure(list(Preop_Creat = c(83L, 70L, 75L, 57L, 73L, 78L, 
84L, 129L, 54L, 90L, 83L, 71L, 79L, 70L, 78L, 55L, 57L, 83L, 
110L, 85L, 120L, 97L, 73L, 91L, 64L, 77L), Postop_creat = structure(c(NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 50L, 40L, 19L, 
35L, 3L, 8L, 44L, 7L, 47L, 25L, 4L, 32L, 34L), .Label = c("100", 
"101", "106", "107", "109", "113", "115", "116", "118", "123", 
"125", "137", "141", "150", "152", "193", "246", "49", "52", 
"53", "56", "560", "57", "58", "61", "62", "64", "66", "67", 
"68", "70", "72", "74", "76", "77", "78", "79", "80", "81", "82", 
"826", "83", "84", "86", "87", "89", "90", "91", "92", "93", 
"97", "99", "no data"), class = "factor"), AKI = c(0L, 0L, 0L, 
0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA)), row.names = 300:325, class = "data.frame")

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

1 Ответ

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

Я попробовал следующие коды, и мне кажется, что это не подходит для проверки в Excel:

 aki_manual <- function(pre, post, aki){
  aki <- as.numeric(as.character(aki))
    for (i in 1:length(post)) {
    if(!is.na(post[i])){

      if(post[i]/pre[i] >= 3){
        aki[i] <- "3"
      } else if (post[i]/pre[i] >= 2){
        aki[i] <- "2"
      } else if (post[i]/pre[i] >= 1.5){
        aki[i] <- "1"
      } else {
        aki[i] <- "0"
      }

    } else{
      aki[i] <- aki[i]
    }

  }

  return(aki)

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

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