簡體   English   中英

如果 R 中的 then 語句 - 根據值替換

[英]If then statement in R - replacing based on value

我有一個非常大的文件,其中合並了兩個客戶數據庫。 關鍵是身份證。 如果客戶名稱不匹配,則顯示 NA。 我需要完成一個簡單的 if/then 語句,如果 NAME_1 列中有“NA”,則 DESIRED OUTCOME NAME 是 NAME_2 中的內容,否則使用 NAME_1 中的內容

我嘗試了以下代碼,但出現錯誤

df <- df %>% if (df$NAME_1 == "NA") rename(df$NAME_1 == df$NAME_2)

在此處輸入圖像描述

只需完成

df$NAME_1[is.na(df$NAME_1)] <- df$NAME_2[is.na(df$NAME_1)]

這只是將每個向量中的值子集到 NAME_1 中為 NA 的位置的元素

根據您提供的信息,使用虛擬數據的解決方案:

df <- data.frame(ID = c(1,6,3,5,6,2,8,9),
                 NAME_1 = c(NA, "STEVE", NA, "JULIE", "BOB", "AMY", NA, "BRUCE"),
                 NAME_2 = c("MARY", "STEVE", "JAN", "JULIE", "BOB", "AMY", "FRANK", "BRUCE"))

library(dplyr)
df %>% 
    dplyr::mutate(NEW_COLUMN = ifelse(is.na(NAME_1), NAME_2, NAME_1))

使用來自base ifelse的 ifelse,

df$'DESIRED OUTCOME NAME' = ifelse(is.na(df$NAME_1), df$NAME_2, df$NAME_1)

在這種特殊情況下,最簡單的解決方案是使用dplyr::coalesce

library(dplyr)

df %>% mutate(`DESIRED OUTCOME NAME` = coalesce(NAME_1, NAME_2))

  ID NAME_1 NAME_2 DESIRED OUTCOME NAME
1  1   <NA>   MARY                 MARY
2  6  STEVE  STEVE                STEVE
3  3   <NA>    JAN                  JAN
4  5  JULIE  JULIE                JULIE
5  6    BOB    BOB                  BOB
6  2    AMY    AMY                  AMY
7  8   <NA>  FRANK                FRANK
8  9  BRUCE  BRUCE                BRUCE

暫無
暫無

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

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