簡體   English   中英

根據 R 中另一列的值替換 NA 值

[英]Replace NA values based on the value of another column in R

我有一張這樣的桌子:

國家 大陸
斐濟
斐濟
美國 美洲
法國 歐洲
意大利 歐洲
美國
法國 歐洲

如何使用 dplyr 將斐濟和美國的 NA 分別替換為“大洋洲”和“美洲”?

謝謝!

使用case_when

library(dplyr)

df1 %>%
  mutate(Continent = case_when(
             Country == 'USA' ~ 'Americas',
             Country == 'Fiji' ~ 'Oceania',
             TRUE ~ Continent)))
#>   Country Continent
#> 1    Fiji   Oceania
#> 2    Fiji   Oceania
#> 3     USA  Americas
#> 4  France    Europe
#> 5   Italy    Europe
#> 6     USA  Americas
#> 7  France    Europe

以可重復格式從問題中獲取的數據

df1 <- structure(list(Country = c("Fiji", "Fiji", "USA", "France", "Italy", 
"USA", "France"), Continent = c(NA, NA, "Americas", "Europe", 
"Europe", NA, "Europe")), row.names = c(NA, -7L), class = "data.frame")  


df1
#>   Country Continent
#> 1    Fiji      <NA>
#> 2    Fiji      <NA>
#> 3     USA  Americas
#> 4  France    Europe
#> 5   Italy    Europe
#> 6     USA      <NA>
#> 7  France    Europe

使用reprex v2.0.2創建於 2022-09-16

我們可以使用

library(dplyr)
keydat <- data.frame(Country = c("Fiji", "USA"), 
   Continent = c("Oceania", "Americas"))
df1 %>% 
  left_join(keydat, by = "Country") %>% 
  transmute(Country, Continent = coalesce(Continent.x, Continent.y))

-輸出

  Country Continent
1    Fiji   Oceania
2    Fiji   Oceania
3     USA  Americas
4  France    Europe
5   Italy    Europe
6     USA  Americas
7  France    Europe

或使用rows_update

rows_update(df1, keydat)
Country Continent
1    Fiji   Oceania
2    Fiji   Oceania
3     USA  Americas
4  France    Europe
5   Italy    Europe
6     USA  Americas
7  France    Europe

暫無
暫無

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

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