У меня есть кадр данных, как показано ниже
Test <- c('Sodium','Heamo Index.','Lipae Index','ictoric index','Chloride','Blood pressure','Test Index')
value <- c(12,'No haemo',NA,'No ict',21,32,NA)
TextualResults <- c('low value',NA,'NO LIPA',NA,'HIGH','low','NO TEST')
df_test <- data.frame(Test,value,TextualResults)
Вход выглядит так, как показано ниже
Я пытался что-то вроде этого
library(tidyverse)
df_test %>%
filter(stringr::str_detect(type, 'index|Index|INDEX'))
Но не уверен, как скопировать значение на основе проверки NA
и сделать поиск нечувствительным к регистру элегантным способом
Я ожидаю, что мой вывод будет таким, как показано ниже
Как вы можете видеть в столбце Test
, всякий раз, когда мы найти значения, которые содержат index
(без учета регистра), мы должны убедиться, что столбец value
не является NA
для этих строк.
Данные по умолчанию могут иметь значение для index
строк в столбце value
, но также могут быть NA
.
Итак, когда это NA
, мы выбираем любое значение присутствует в столбце TextualResults
и помещается обратно в столбец value
для строк, содержащих термин index
. В основном столбец value
никогда не будет NA
для строк, содержащих index
term