首页 > 解决方案 > 如何使用来自另一个数据框的信息更新数据框列

问题描述

我有2个数据框:

df1 = data.frame(Bird_ID = c(1:6), Sex = c("Male","Female","Male","Male","Male","UNK"))
df2 = data.frame(Bird_ID = c(6), Seen_sex = c("Female"))

df1
    # Bird_ID Sex
    # 1 Male
    # 2 Female
    # 3 Male
    # 4 Male
    # 5 Male
    # 6 UNK
    
    df2
    # Bird_ID Seen_Sex
    # 6 Female

如何使用来自的信息更新鸟6?所以 df1 中的“UNK”现在应该变成“Female”,所有其他鸟都保持不变。df1df2

标签: rdataframematchupdates

解决方案


使用dplyr>=0.5版本:

> merge(df1, setNames(df2, c('Bird_ID', 'Sex')), on='Bird_ID', all=T) %>% distinct(Bird_ID, .keep_all=T)
  Bird_ID    Sex
1       1   Male
2       2 Female
3       3   Male
4       4   Male
5       5   Male
6       6 Female
> 

推荐阅读