我有一个包含 3,000 行的 df1
,如下所示:
Stabr Area_name trucks FIPS
2 IL Cook 16.8 72000
3 AL Autauga County 13.8 31088
4 CA Orange 9.8 32080
5 AZ Maricopa 30.9 4000
6 CA Los Angeles 21.2 1022
我还有一个包含 1,500 行的 df2
,如下所示:
county state FIPS cars accidents
2 Cook Illinois 72000 10435 89
3 Orange California 32080 1547 5
4 Maricopa Arizona 4000 1571 19
5 Los Angeles California 1022 6759 100
我想将 cars
和 accidents
列添加到与 FIPS
列匹配的 df1
中。如果较小的 df2
中没有相应的 FIPS,我想在 cars
和 `accidents 列中添加零。最终产品看起来像:
Stabr Area_name cars FIPS cars accidents
2 IL Cook 16.8 72000 10435 89
3 AL Autauga County 13.8 31088 0 0
4 CA Orange 9.8 32080 1547 5
5 AZ Maricopa 30.9 4000 1571 19
6 CA Los Angeles 21.2 1022 6759 100
最佳答案
在 dplyr
中:
library(dplyr)
df1 %>%
left_join(df2 %>% select(-state, -county), by = 'FIPS') %>%
mutate_at(vars(cars, accidents), coalesce, 0L)
输出:
Stabr Area_name trucks FIPS cars accidents
1 IL Cook 16.8 72000 10435 89
2 AL Autauga County 13.8 31088 0 0
3 CA Orange 9.8 32080 1547 5
4 AZ Maricopa 30.9 4000 1571 19
5 CA Los Angeles 21.2 1022 6759 100
关于r - 如何合并不同大小的数据框并添加空白数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60920861/