замена текста с NA в R - PullRequest
       14

замена текста с NA в R

0 голосов
/ 16 февраля 2019

У меня есть переменная PC_R в кадре данных jd_df, которая описывает результаты лабораторных испытаний.Я хотел бы заменить некоторые данные в этой переменной (например, tf, QNS, rej) на NA.Я пробовал этот код:

 jd_df %>%
  replace(PC_R,TF,NA)

и это:

jd_df %>%
  replace(jd_df,PC_R==TF,NA)    

и это:

jd_df %>%
  replace(PC_R,"TF","NA")

и это:

jd_df %>%
  replace(jd_df,PC_R%in%TF,NA)

Я получаю сообщение об ошибке:

Error in replace(., jd_df, PC_R %in% TF, NA) : unused argument (NA)

Мне интересно, не подходит ли команда замены.

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

Я нашел, что это работает, чтобы изменить многосимвольный текст на NA:

jd_df %>% mutate(PC_R = replace(PC_R, PC_R %in% "TF"|PC_R %in% "tf"|PC_R %in% "rej",NA))
0 голосов
/ 18 февраля 2019

Ответ case_when() выше работает хорошо!Более простой альтернативой является функция na_if(), которая заменяет указанную строку на NA.Таким образом:

library(dplyr)
iris %>%
  mutate(Species = na_if(Species, "setosa")) 

Это изменит все экземпляры от setosa до NA в столбце Species.В вашем случае это может быть:

jd_df %>%
  mutate(PC_R = na_if(PC_R, "TF"))

, который заменяет все "TF" на NA.При необходимости вы можете повторить код, чтобы перехватить все ваши NA значения:

jd_df %>%
  mutate(PC_R = na_if(PC_R, "TF"),
         PC_R = na_if(PC_R, "QNS"),
         PC_R = na_if(PC_R, "rej"))
0 голосов
/ 16 февраля 2019

Этого можно добиться, используя case_when, как показано на примере набора данных iris ниже

library(dplyr)
iris <- iris %>% 
  mutate(Species = as.character(Species)) %>% 
  mutate(Species = case_when(
    Species == "setosa" ~ NA_character_, 
    TRUE ~ Species
  ))

Можно указать несколько изменений:

iris %>% 
  mutate(Species = as.character(Species)) %>% 
  mutate(Species = case_when(
    Species == "setosa" | Species == "versicolor" ~ NA_character_, 
    TRUE ~ Species
  ))

Создано в 2019-02-16 с помощью представительный пакет (v0.2.0).

...