繁体   English   中英

有条件地用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM