【问题标题】:Data Table Replacing Values [duplicate]数据表替换值[重复]
【发布时间】:2021-02-11 10:20:21
【问题描述】:

我需要使用 R 数据表将代码中的某些值替换为 NA。下面的代码似乎只替换了其中一个值。有谁知道我可能会出错? 谢谢

test <- data.table(name=c("x","y"),num1 =c(1.5,444444), num2= c(2020, 9999), num3= c(NA, 666))

numeric_colnames <- c("num1","num2","num3")

test[, (numeric_colnames) := lapply(.SD, function(x) ifelse(x %in% as.numeric(666,9999), as.numeric(NA), x)), .SDcols=numeric_colnames]

【问题讨论】:

    标签: r if-statement replace data.table


    【解决方案1】:

    检查as.numeric(666,9999)的输出:

    as.numeric(666,9999)
    #[1] 666
    

    因此它仅与 666 进行比较。您不需要 as.numeric

    library(data.table)
    test<- data.table(name=c("x","y"),num1 =c(1.5,444444), 
                      num2= c(2020, 9999), num3= c(NA, 666))
    
    numeric_colnames<- c("num1","num2","num3")
    
    test[, (numeric_colnames) := lapply(.SD, function(x) 
              ifelse(x %in% c(666,9999), NA, x)), .SDcols=numeric_colnames]
    test
    
    #   name     num1 num2 num3
    #1:    x      1.5 2020   NA
    #2:    y 444444.0   NA   NA
    

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 2018-05-04
      • 2018-03-09
      • 2023-03-11
      • 2018-09-09
      • 2018-02-26
      • 1970-01-01
      • 2012-10-01
      相关资源
      最近更新 更多