【发布时间】:2019-05-16 14:53:13
【问题描述】:
我有一个数据集,我从中制作了一个可重现的示例:
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 值。
如果有人愿意尝试一下?非常感谢
【问题讨论】: