r - 当 R 中的 df2 中有 1 时,替换 df1 中的 0
问题描述
我有 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 用户!
解决方案
我们创建一个逻辑矩阵,然后根据索引将值分配给 1
i1 <- (df2 == 1 & !is.na(df2)) & (df1 == 0 & !is.na(df1))
df1[i1] <- 1
推荐阅读
- r - 创建一个新列,其值为 1 表示每个组中的前 x 值,0 表示组中的其余值
- python - Django - 我可以使用模板标签来呈现给定 URL 路径条件的 HTML 吗?
- javascript - 在 Devtools 中编辑网站的 Javascript/源文件 - 不更新
- mfc - 如何激活位于禁用窗口 (CWnd) 中的按钮 (CButton)?
- python - 基于数据框中的一列列表创建标志
- r - 带有标准偏差填充的ggplot图
- arrays - 删除 4D 数组中的对角线元素
- c# - Kaltura API C#如何获取StringEnum的值
- vue.js - Vue devtools 刷新后停止
- c# - 如何使用视图模型中的对象列表在 MVC 中创建“创建”视图?