相关疑难解决方法(0)

在data.table中转换*some*列类

我想将data.table cols的子集转换为新类.这里有一个流行的问题(在data.table中转换列类)但是答案创建了一个新对象,而不是在starter对象上运行.

举个例子:

dat <- data.frame(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10))
cols <- c('ID', 'Quarter')
Run Code Online (Sandbox Code Playgroud)

如何最好地将cols列转换为(例如)一个因子?在普通的data.frame中,你可以这样做:

dat[, cols] <- lapply(dat[, cols], factor)
Run Code Online (Sandbox Code Playgroud)

但这对data.table不起作用,也不适用

dat[, .SD := lapply(.SD, factor), .SDcols = cols]
Run Code Online (Sandbox Code Playgroud)

来自Matt Dowle(2013年12月)的链接问题中的评论表明以下情况很好,但看起来不那么优雅.

for (j in cols) set(dat, j = j, value = factor(dat[[j]]))
Run Code Online (Sandbox Code Playgroud)

目前是否有更好的data.table答案(即更短+不生成计数器变量),或者我应该只使用上面的+ rm(j)

r data.table

22
推荐指数
1
解决办法
9654
查看次数

标签 统计

data.table ×1

r ×1