我有一个数据框 df1 如下 -
ID Count
11 345
22 456
33 786
44 765
55 NA
66 888
77 NA
Run Code Online (Sandbox Code Playgroud)
然后我有一个 df2 如下 -
ID Count
11 536
22 654
33 786
44 999
55 890
66 111
77 654
Run Code Online (Sandbox Code Playgroud)
我希望将NAin 中的值df1替换为df2这些特定 id 中的值。
结果df3应该是:
ID Count
11 345
22 456
33 786
44 765
55 890
66 888
77 654
Run Code Online (Sandbox Code Playgroud)
任何帮助都会非常感谢
使用dplyr::coalesce将使任务变得更简单。
library(dplyr)
df1 %>% inner_join(df2, by= "ID") %>%
mutate(Count = coalesce(Count.x, Count.y)) %>%
select(ID, Count)
# ID Count
# 1 11 345
# 2 22 456
# 3 33 786
# 4 44 765
# 5 55 890
# 6 66 888
# 7 77 654
Run Code Online (Sandbox Code Playgroud)
数据:
df1 <- read.table(text =
"ID Count
11 345
22 456
33 786
44 765
55 NA
66 888
77 NA",
header = TRUE)
df2 <- read.table(text =
"ID Count
11 536
22 654
33 786
44 999
55 890
66 111
77 654",
header = TRUE)
Run Code Online (Sandbox Code Playgroud)
使用dplyr:
library(dplyr)
df1 %>%
left_join(df2, by = c("ID")) %>%
mutate(Count = ifelse(is.na(Count.x), Count.y, Count.x)) %>%
select(-c(Count.x, Count.y))
Run Code Online (Sandbox Code Playgroud)
这产生
ID Count
1 11 345
2 22 456
3 33 786
4 44 765
5 55 890
6 66 888
7 77 654
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5524 次 |
| 最近记录: |