【问题标题】:Replace Values with NA by same position in another df用另一个df中的相同位置替换值与NA
【发布时间】:2018-06-12 18:43:05
【问题描述】:

我有两个数据框:

df1
 Col1     Col2      Col3     Col4
    1        0         3        5 
   NA        1        NA        0
    2        3        NA        5

df2
 Col1     Col2      Col3     Col4
    7        0         5        7 
    0        8         0        0
    9        9         6        2

如何将df2 替换为NAdf1 相同的位置?

我希望我的最终 df3 看起来像这样:

 Col1     Col2      Col3     Col4
    7        0         5        7 
   NA        8        NA        0
    9        9        NA        2

【问题讨论】:

标签: r dplyr na


【解决方案1】:

在我看来,与tidyverse 相比,base R 更适合这一点:

df2[is.na(df1)] <- NA

给出:

> df2
  Col1 Col2 Col3 Col4
1    7    0    5    7
2   NA    8   NA    0
3    9    9   NA    2

如果你真的需要df3:

df3 <- df2
df3[is.na(df1)] <- NA

【讨论】:

    【解决方案2】:
    df3=`is.na<-`(df2,is.na(df1))
    df3
      Col1 Col2 Col3 Col4
    1    7    0    5    7
    2   NA    8   NA    0
    3    9    9   NA    2
    

    甚至

    df3=replace(df2,is.na(df1),NA)
     df3
      Col1 Col2 Col3 Col4
    1    7    0    5    7
    2   NA    8   NA    0
    3    9    9   NA    2
    

    【讨论】:

    • 请注意,replace 只不过是 x[condition] &lt;- value 周围的包装器
    • @jaap 使用您的解决方案,您正在制作数据框的副本..虽然这没有复制。
    猜你喜欢
    • 2016-01-09
    • 2017-05-01
    • 1970-01-01
    • 2019-12-22
    • 2016-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多