簡體   English   中英

用R中的NA替換文本

[英]replacing text with NA in R

我在數據幀jd_df中有一個變量PC_R ,用於描述實驗室測試結果。 我想用NA替換此變量中的某些數據(例如tf,QNS,rej)。 我已經試過這段代碼:

 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)

我想知道替換命令是否不可行。

您可以使用case_when實現此目的,如下面的虹膜數據集所示

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
  ))

reprex軟件包 (v0.2.0)創建於2019-02-16。

我發現這可以將多個字符文本更改為NA:

jd_df %>% mutate(PC_R = replace(PC_R, PC_R %in% "TF"|PC_R %in% "tf"|PC_R %in% "rej",NA))

上面的case_when()答案很好! 一個更簡單的替代方法是na_if()函數,該函數將指定的字符串替換為NA 因此:

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

這將改變所有實例setosaNASpecies 在您的情況下,可能是:

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

NA替換所有"TF" 您可以根據需要重復代碼以捕獲所有預期的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"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM