首页 > 解决方案 > 基于另一列替换数据框列中的值

问题描述

我在 R 中有一个数据框:

 a  b  c     d   e
 1  2  3    23   1
 4  5  6  -Inf   2
 7  8  9     2   8
10 11 12  -Inf NaN

如果 d 列中的相应值是 -Inf ,我想用 NA 替换列 e 中的所有值,如下所示:

 a  b  c     d   e
 1  2  3    23   1
 4  5  6  -Inf  NA
 7  8  9     2   8
10 11 12  -Inf  NA

任何帮助表示赞赏。如果没有循环,我就无法做到这一点,而且完整的数据帧需要很长时间。

标签: rdataframe

解决方案


ifelse是矢量化。我们可以ifelse在不使用循环的情况下使用。

dat$e <- ifelse(dat$d == -Inf, NA, dat$e)

数据

dat <- read.table(text = "a  b  c     d   e
 1  2  3    23   1
 4  5  6  -Inf   2
 7  8  9     2   8
10 11 12  -Inf NaN", header = TRUE)

推荐阅读