【问题标题】:Replace 0 in df1 when there is a 1 in df2 in R当 R 中的 df2 中有 1 时,替换 df1 中的 0
【发布时间】:2019-05-01 21:56:03
【问题描述】:

我有 2 个具有相同列数和行数的数据框。 df1 用 0 和 NA 填充,df2 用 1 和 NA 填充。只要 df2 中有 1,我希望它也出现在 df1 中,方法是替换在 df1 中的同一位置找到的 0。实际的数据帧大约有 5000 列和 85 行,所以我正在寻找一个可以轻松运行整个数据的解决方案。

df1 看起来像这样:

       1    2   3   4   5   6   7   8   9   10    
stat1  NA   NA  NA  NA  NA  NA  NA  0   0   0
stat2  0    0   0   0   0   0   0   0   0   0
stat3  0    0   0   0   0   0   NA  NA  NA  NA
stat4  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat5  NA   NA  NA  0   0   0   0   0   0   0
stat6  NA   NA  0   0   0   0   0   0   NA  NA
stat7  0    0   0   0   0   0   0   0   0   0
stat8  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat9  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat10 NA   NA  NA  NA  NA  0   0   0   0   0

df2 看起来像这样:

       1    2   3   4   5   6   7   8   9   10    
stat1  NA   NA  NA  NA  NA  NA  NA  NA  NA  1
stat2  1    NA  NA  NA  NA  NA  NA  NA  NA  NA
stat3  NA   NA  NA  1   NA  NA  NA  NA  NA  NA
stat4  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat5  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat6  NA   NA  NA  NA  1   NA  NA  NA  NA  NA
stat7  1    NA  NA  NA  NA  NA  NA  NA  NA  NA
stat8  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat9  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat10 NA   NA  NA  NA  NA  NA  NA  NA  NA  NA

重申一下,df1 中有 0,df2 中有 NA,我想保留 0。在 df1 和 df2 中都有 NA 的地方,我想保留 NA。 df1中有0,df2中有1,我想保留1。

我将不胜感激,因为我是一个非常新手的 R 用户!

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    我们创建一个逻辑矩阵,然后根据索引将值赋值为 1

    i1 <- (df2 == 1 & !is.na(df2)) & (df1 == 0 & !is.na(df1))
    df1[i1] <- 1
    

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 1970-01-01
      • 2017-02-06
      • 2020-09-26
      • 2021-03-03
      • 2021-11-27
      • 2021-06-09
      • 1970-01-01
      • 2017-05-01
      相关资源
      最近更新 更多