从另一个数据框中填充一个数据框的值

Pro*_*oob 4 r missing-data dataframe na

我有两个数据框。df1在我感兴趣的列中有一些 NA,并且df2有相同的列,但具有我需要的值。我想根据行名填充 df1 中的这些值(df2 中的行名在 df1 中找到)。

例如,df1 会是这样的:

              Age    Gender     
Patient_1      NA     Male  # Has NA
Patient_3      30     Male
Patient_66     45     Female
Patient_10     NA     Female  # Has NA
Patient_11     67     Female
Patient_23     NA     Male  # Has NA
Run Code Online (Sandbox Code Playgroud)

df2 包含相同的信息,但仅限于df1 中年龄列中具有NA的样本:

              Age    Gender
Patient_1     59      Male
Patient_10    80      Female
Patient_23    21      Male
Run Code Online (Sandbox Code Playgroud)

现在,如何为每个样本填充从 df2 到 df1 的年龄值?

我试过这个:

for(i in 1:length(df1$Age)){
  
  if(rownames(df1)[i] == rownames(df2)[i]){
    
    df1$Age[[i]] = df2$Age[[i]]
    
  }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为由于某种原因它只填充了值的子集,某些值在 df1 中仍然不适用。

小智 5

由于df2包含 中所有 NA 行的数据df1,因此您可以简单地df1使用 的 行名称对 中的所有 NA 行进行索引df2,然后Age用该df2$Age列覆盖它们的值。

df1[rownames(df2), "Age"] <- df2$Age
Run Code Online (Sandbox Code Playgroud)