【问题标题】:How to exclude one column from data.table OR convert to data.table to MTS如何从 data.table 中排除一列或将 data.table 转换为 MTS
【发布时间】:2012-08-16 06:43:31
【问题描述】:

当使用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))

如果没有df = as.data.frame(dt),我该怎么做?

【问题讨论】:

    标签: r data.table zoo


    【解决方案1】:

    以前的答案有效,但这里是更新方法的答案:

    ## 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]])
    

    作为扩展,如果您想从 data.table 中删除多个列,请尝试以下操作之一:

    dt[,-c('value1', ..myvar)]
    dt[, .SD, .SDcols = !c('value1', (myvar))]
    

    【讨论】:

      【解决方案2】:

      试试with=FALSE

      dt[,-1,with=FALSE]
      

      顺便说一句,功能请求 #416 是相关的:

      Add not join DT[-J(...)], and not columns DT[,-"colC",with=FALSE].

      【讨论】:

      • 从 1.8.3 版开始,这有效:dt[, !"mydates", with=FALSE]
      • @GSee,你能给出完整的答案吗?现在是最好的答案!
      • dt[, !"mydates"] 没有 with= 现在也可以使用
      • 这很令人困惑,它适用于:dt[, !"mydates"] ,但 col <-"mydates" 然后:dt[, !col] ` 不起作用,您需要 with,例如:@987654332 @
      • 这个 2012 年的答案需要更新,因为不需要 with=FALSE
      猜你喜欢
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 2019-11-23
      • 2012-11-17
      • 1970-01-01
      • 2013-05-07
      • 2020-08-28
      相关资源
      最近更新 更多