首页 > 解决方案 > 在 R 中构建一个新变量,该变量取决于另一个变量的值

问题描述

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

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

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

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

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

标签: rvariablesconditional-statements

解决方案


如果您有这样的 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的外观。


推荐阅读