【问题标题】:Replacing missing numbers based on multiple conditions根据多个条件替换缺失的数字
【发布时间】:2021-07-20 20:26:33
【问题描述】:

我有以下问题:我有一个包含三个变量的数据集。我们称它们为 a、b 和 c。

我必须将它们组合成一个加法索引。但是如果缺少三个之一,我必须用某个值(0.5)替换它。如果缺少两个或三个,则保持 NA。

ds 是数据集的名称

for(i in ds$a) {
  if is.na(i) && !is.na(ds$b) && !is.na(ds$c)  {
    ds$a <- 0.5
  }
}

【问题讨论】:

  • 你能提供一个示例数据集(使用dput(ds))和你想要的结果吗?
  • 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example

标签: r na missing-data


【解决方案1】:

您能否澄清一下“将它们组合成一个加性索引”这个术语。这是否意味着您要rowsum 三个现有列?并且还不清楚为什么在满足条件时将值替换为现有变量a

我有办法解决您的问题,检查您的 NA 条件(并替换到新列)

 (ds <- data.frame(a= c(1,NA,2),
                  b= c(10,20,30), 
                  c= c(100,200,300)))
   a  b   c
1  1 10 100
2 NA 20 200
3  2 30 300
 
 (flag <-  sapply(ds, anyNA))  ## check whether any NA's columns-wise
    a     b     c 
 TRUE FALSE FALSE 
 
 if(sum(flag)==1){
   ds$d <- 0.5 
 }else if(sum(flag) %in% 2:3){
   ds$d <- NA
 }
 ds
   a  b   c   d
1  1 10 100 0.5
2 NA 20 200 0.5
3  2 30 300 0.5

【讨论】:

    猜你喜欢
    • 2021-02-05
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2018-10-29
    相关资源
    最近更新 更多