如何在R中创建一个新变量,如果一个案例缺少一个值而另一个变量具有一个观察到的值,则返回1?

vahis100

我有两个包含缺失数据loon和的变量profstat为了更好地了解缺失的数据和需要插补的数据,我想problem在数据框中创建一个附加变量1如果loon缺失并被profstat观察,0返回每种情况否则返回。我生成了以下代码,仅将其作为输出x[] = 1这个问题有解决办法吗?

 {
  problem <- dim(length(t))
  for (i in 1:nrow(dflapopofficial))
  {
    if (is.na(dflapopofficial$loon[i])==TRUE & is.na(dflapopofficial$profstat[i])==FALSE) {  
      dflapopofficial$problem[i]=1
    } else {
      dflapopofficial$problem[i]=0
    }
    return(problem)
  }
艾伦·卡梅伦

这里有些事情可以改进:

  1. 请记住,R中的许多运算都是矢量化的。进行逻辑检查等时,您不需要遍历向量中的每个元素。
  2. is.na(some_condition) == TRUE与...相同is.na(some_condition)is.na(some_condition) == FALSE相同!is.na(some_condition)
  3. 如果要在数据框中写入新列,并且要引用该数据框中的多个变量,则使用within可以节省很多键入时间,尤其是在数据框的名称很长的情况下
  4. 您正在返回problem,但是在循环中,您正在写入的dflapipofficial$problem是另一个变量。
  5. 如果要写1和0,可以使用隐式将逻辑转换为数字 +(logical_vector)

将所有这些放在一起,您可以用单行替换整个循环:

within(dflapopofficial, problem <- +(is.na(loon) & !is.na(profstat)))

请记住,将结果存储到数据框或它的副本中,例如

df <- within(dflapopofficial, problem <- +(is.na(loon) & !is.na(profstat)))

因此,这df只是dflapopofficial您多余的专栏的一副

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章