[英]How to conditionally fill column with previous values "rowwisely" with data.table
[英]Conditionally replacing column values with data.table
我有以下数据表:
dt <- data.table(col1 = rep("a",6), col2 = c(1,1,1,2,3,1))
现在我想用值“bigDog”替换 col2 中的所有 1。 我可以使用 data.frame 精神做到这一点:
dt$col2[dt$col2==1,] <- "bigDog"
但我想知道是否有不同的方式,更“面向数据表” ?
如果您不想更改列的类型,您可以这样做:
dt[col2 == 1, col2 := 123]
通过类型更改,您可以执行以下操作:
dt[, col2 := as.character(col2)][col2 == "1", col2 := "bigDog"]
如果您不先更改类型,“bigDog”将被强制为整数,即NA
。 当然,您还会收到一堆关于此的警告。
请注意,除了不那么繁琐的语法之外,使用:=
的优点是不会制作额外的数据副本(如<-
将)而是就地修改。
另外你可以使用库 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"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.