如何根据另一列中的值替换一行中的值?

时间:2014-06-16 18:38:05

标签: r

我有以下数据:

#ID    DV    MDV#
  1     2     1
  2     3     0
  3     0     0
  4     .     0

我想要以下内容: 每当DV列具有非零数字时,MDV列应为0,反之亦然。 如果DV具有零值(或缺失值),则该ID的MDV应为1。

#ID    DV    MDV#
  1     2     0
  2     3     0
  3     0     1
  4     .     1

我该如何编码?

2 个答案:

答案 0 :(得分:2)

如果您有data.frame f,那么您可以

f$MDV[f$DV > 0] <- 0

MDV为正时将DV设置为零。

答案 1 :(得分:0)

ifelse可能会在这里为您解决问题。

阅读您的数据:

> d <- read.table(h=T, text = "ID    DV    MDV
   1     2     1
   2     3     0
   3     0     0
   4     .     0", stringsAsFactors = FALSE)

由于"." > 0FALSE,我们可以根据您MDV列的规范重置DV列,如下所示:

> d$MDV <- ifelse(d$DV > 0, 0, 1)
> d
#   ID DV MDV
# 1  1  2   0
# 2  2  3   0
# 3  3  0   1
# 4  4  .   1