【问题标题】:How to substitute values in one row column based on values in another column?如何根据另一列中的值替换一行中的值?
【发布时间】:2017-09-26 22:29:51
【问题描述】:

我有以下数据:

#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

如何编码?

【问题讨论】:

  • DV栏里真的有.吗?
  • 是的,它有 '.'或“0”
  • NA 分配给. 值是否安全?
  • 为'.'分配'0'是安全的
  • 我不相信你自己做了一点努力就找到了答案并且没有成功

标签: r


【解决方案1】:

如果你有data.framef,那么你可以这样做

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

每当DV 为正时,将MDV 设置为零。

【讨论】:

    【解决方案2】:

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

    读取您的数据:

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

    由于"." &gt; 0FALSE,我们可以根据您对DV 列的指定重置MDV 列,如下所示:

    > 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      相关资源
      最近更新 更多