[英]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.