【问题标题】:Building a new variable in R which depends on the value of another variable在 R 中构建一个新变量,该变量取决于另一个变量的值
【发布时间】:2021-02-09 13:03:25
【问题描述】:

我必须建立一个新变量(称为:条件)。 我的数据框包含三个距离变量:distance1.1、distance1.2、distance1.3 (根据他们的情况,测试对象总是只有三个变量中的两个有值)

如果变量“距离1.1”中没有值(NA),则新条件的值应为1。

如果变量“距离1.2”中没有值(NA),则新条件的值应该是2。

如果变量“距离1.3”中没有值(NA),则新条件的值应为3。

谁能帮助我,我如何在 R 中构建这个新变量?

【问题讨论】:

  • 欢迎使用 stackoverflow。到目前为止,您尝试过什么?
  • 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example

标签: r variables conditional-statements


【解决方案1】:

我认为你可以使用简单的条件结构,像这样:

if (is.nan(distance1.1)) {
  condition <- 1
} else if (is.nan(distance1.2)) {
  condition <- 2
} else {
  condition <- 3
}

Have a nice day !

【讨论】:

    【解决方案2】:

    如果你有这样的data.frame:

    df <- data.frame(
      distance1.1 = c(NA, 2, 3, 4),
      distance1.2 = c(1, NA, 3, NA),
      distance1.3 = c(1, 2, NA, 4)
    )
    df
    
      distance1.1 distance1.2 distance1.3
    1          NA           1           1
    2           2          NA           2
    3           3           3          NA
    4           4          NA           4
    

    您可以使用apply 按行识别哪些列缺少NA 值。您可以使用sub 提取列名的最后一位数字以存储在新的condition 列中。

    df$condition <- apply(df, 1,
      function(x) sub('distance1.(\\d+)', '\\1', names(which(is.na(x))))
    )
    df
    
      distance1.1 distance1.2 distance1.3 condition
    1          NA           1           1         1
    2           2          NA           2         2
    3           3           3          NA         3
    4           4          NA           4         2
    

    如果您可能连续有多个缺失值,您可以在 apply 函数中寻求其他选项,具体取决于您希望 condition 的样子。

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 2019-01-05
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2015-03-19
      相关资源
      最近更新 更多