我有一個非常大的檔案,我在其中合并了兩個客戶資料庫。關鍵是身份證。如果客戶名稱不匹配,則顯示 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)

uj5u.com熱心網友回復:
簡單地完成
df$NAME_1[is.na(df$NAME_1)] <- df$NAME_2[is.na(df$NAME_1)]
這只是將每個向量中的值子集到 NAME_1 中為 NA 的位置的元素
我更喜歡用 data.table 而不是 data.frame 來做這個,然后你可以做
df[is.na(NAME_1), NAME_1 := NAME_2]
uj5u.com熱心網友回復:
使用ifelse來自baseR,
df$'DESIRED OUTCOME NAME' = ifelse(is.na(df$NAME_1), df$NAME_2, df$NAME_1)
uj5u.com熱心網友回復:
根據您提供的資訊使用虛擬資料的解決方案:
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))
uj5u.com熱心網友回復:
在這種特殊情況下,最簡單的解決方案是使用 dplyr::coalesce
library(dplyr)
df %>% mutate(`DESIRED OUTCOME NAME` = coalesce(NAME_1, NAME_2))
#OR
df$`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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/368528.html
下一篇:為不一致的子字串制定捕獲組
