7赞
393
当前位置:  开发笔记 > 编程语言 > 正文

根据R中另一个单元格中的值替换NA的单元格

如何解决《根据R中另一个单元格中的值替换NA的单元格》经验,为你挑选了1个好方法。

我有一个数据集,我从中做了一个可重现的例子:

set.seed(1)
Data <- data.frame(
A = sample(0:5),
B = sample(0:5),
C = sample(0:5),
D = sample(0:5),
corr_A.B = sample(0:5),
corr_A.C = sample(0:5),
corr_A.D = sample(0:5))

> Data
  A B C D corr_A.B corr_A.C corr_A.D
1 1 5 4 2        1        2        4
2 5 3 1 3        5        5        0
3 2 2 3 4        0        1        2
4 3 0 5 0        4        0        1
5 0 4 2 1        2        3        3
6 4 1 0 5        3        4        5

我想检查,对于每个列B,C和D,如果它们的一个单元格等于0,我想在同一行上用NA替换相应的corr_A列.例如,由于Data $ B [4]等于0,我希望Data $ corr_A.B [4]被NA替换.

我期待获得以下结果:

> Data
  A B C D corr_A.B corr_A.C corr_A.D
1 1 5 4 2        1        2        4
2 5 3 1 3        5        5        0
3 2 2 3 4        0        1        2
4 3 0 5 0        NA       0       NA
5 0 4 2 1        2        3        3
6 4 1 0 5        3        NA       5

我尝试了不同的方法,使用for循环,但我很挣扎.此外,在我正在处理的数据集中,还有许多其他列不需要检查该条件,我希望能够专门指定我在哪些列中查找0值.

如果有人愿意尝试一下呢?非常感谢



1> Rui Barradas..:

单线使用功能is.na<-.

is.na(Data[5:7]) <- Data[2:4] == 0

Data
#  A B C D corr_A.B corr_A.C corr_A.D
#1 1 5 4 2        1        2        4
#2 5 3 1 3        5        5        0
#3 2 2 3 4        0        1        2
#4 3 0 5 0       NA        0       NA
#5 0 4 2 1        2        3        3
#6 4 1 0 5        3       NA        5

推荐阅读
devbox
平凡兔子007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4