Conditionally replacing column values with data.table

后端 未结 2 415
小鲜肉
小鲜肉 2020-12-13 03:40

I have the following data.table:

dt <- data.table(col1 = rep(\"a\",6), col2 = c(1,1,1,2,3,1))

Now I want to replace all the 1 in col2 wi

相关标签:
2条回答
  • 2020-12-13 04:14

    Had you not wanted to change the type of the column, you'd do:

    dt[col2 == 1, col2 := 123]
    

    With the type change, you can do:

    dt[, col2 := as.character(col2)][col2 == "1", col2 := "bigDog"]
    

    If you don't change the type first, "bigDog" will get coerced to integer, i.e. NA. You'll also get a bunch of warnings about that of course.

    Note that besides less cumbersome syntax, using := has the advantage of not making extra copies of data (as <- will) and instead modifies in place.

    0 讨论(0)
  • 2020-12-13 04:35

    Aditionally you could use the library plyr

    library(data.table)
    library(plyr)
    dt <- data.table(col1 = rep("a",6), col2 = c(1,1,1,2,3,1))
    dt <- mapvalues(dt[,col2], c(1), c("BigDog"))
    
    0 讨论(0)
提交回复
热议问题