我試圖用名爲zipless的另一個表中的zipcode替換df表中的空白(缺失)zipcode。 什麼是最好的方法? for循環可能非常緩慢。R中的條件查找
我正在嘗試這樣的事情,但它不起作用。
df$zip_new <- ifelse(df, is.na(zip_new),
left_join(df,zipless, by = c("contbr_nm" = "contbr_nm")),
zip_new)
我能夠使用這種方法使其工作,但我相信它不是最好的。 我首先在查找表中添加了一個新列,然後在下一步中根據需要選擇性地使用它。
library(dplyr)
#temporarly renaming the lookup column in the lookup table
zipless <- plyr::rename(zipless, c("zip_new"="zip_new_temp"))
#adding the lookup column to the main table
df <- left_join(df, zipless, by = c("contbr_nm" = "contbr_nm"))
#taking over the value from the lookup column zip_new_temp if the condition is met, else, do nothing.
df$zip_new <- ifelse((df$zip_new == "") &
(df$contbr_nm %in% zipless$contbr_nm),
df$zip_new_temp,
df$zip_new)
什麼是適當的方法來做到這一點?
非常感謝!
[重現數據(https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-例如)。即使是幾個玩具數據集。你可以在你的一些上使用'dput'或者創建一些解釋這個問題的東西。還包括你想要的輸出。就目前來看,你的問題太模糊了。此外,請包括您正在使用的軟件包的名稱:'left_join'不是基本的R函數。 – lmo
使用coalesce()函數,即。 df $ zip_new < - coalesce(df $ zip_new,df $ zip_new_temp) –
請注意'coalesce'位於'dplyr'包中。 –