gen*_*ama 48 r zoo data.table
使用data.table时可以返回除一个之外的所有列,例如data.frame?
如果答案是否定的,是否有人有一种优雅的方式将多个时间序列转换data.table为一个zoo或其他时间序列对象?
请考虑以下示例:
library(data.table)
library(zoo)
## DEFINE DATA
set.seed(1)
dt = data.table(
mydates = as.Date("2012-01-01") + 1:9,
value1 = sort(rpois(9, 6)),
value2 = sort(rpois(9, 6)),
value3 = sort(rpois(9, 6)),
value4 = sort(rpois(9, 6)),
value5 = sort(rpois(9, 6)))
## CONVERT TO DATA FRAME
df = as.data.frame(dt)
## CONVERT TO ZOO
zooObj = zoo(df[,-1], df$mydates)
## EXAMPLE OF DESIRED RESULTS
plot(zooObj, col=1:ncol(zooObj))
Run Code Online (Sandbox Code Playgroud)
没有我怎么办df = as.data.frame(dt)?
Mat*_*wle 61
试试with=FALSE:
dt[,-1,with=FALSE]
Run Code Online (Sandbox Code Playgroud)
另外,功能请求#416是相关的:
添加不是连接 DT[-J(...)],而不是列 DT[,-"colC",with=FALSE].
小智 5
之前的答案有效,但这是使用更新方法的答案:
## CONVERT TO ZOO
#### old method
zooObj = zoo(x=dt[,-1,with=FALSE], order.by=dt$mydates)
#### alternatives
zooObj = zoo(x=dt[,!'mydates'], order.by=dt$mydates)
zooObj = zoo(x=dt[,-'mydates'], order.by=dt$mydates)
#### and if column name is a variable
myvar = 'mydates'
zooObj = zoo(x=dt[,!..myvar], order.by=dt[[myvar]])
zooObj = zoo(x=dt[,-..myvar], order.by=dt[[myvar]])
Run Code Online (Sandbox Code Playgroud)
作为扩展,如果您想从 中删除多于一列data.table,请尝试以下操作之一:
dt[,-c('value1', ..myvar)]
dt[, .SD, .SDcols = !c('value1', (myvar))]
Run Code Online (Sandbox Code Playgroud)