首页 > 解决方案 > 有没有一种快速的方法可以将数据表转换为数据表列表?

问题描述

我有一个具有此架构的数据表:

date, key_a, key_b, key_c, key_d, value

我想列出一个具有这种结构的列表:

[1]
date, key_a, value

[2] 
date, key_b, value

[3]
date, key_c, value

我想将 my 聚合dt到一个列表中,其中每个条目都dt在一个单独的键中聚合。

这是我的代码

setDT(dt)

list_of_dts[1] <- 
    dt[, .(value = sum(value)), .(date, key_a)]

list_of_dts[2] <- 
    dt[, .(value = sum(value)), .(date, key_b)]

(So on)

有没有更有效的方法来解决这个问题?

标签: rdatatabledata.table

解决方案


也许以长格式获取数据,然后对其进行总结:

library(data.table)
setDT(dt)
dt1 <- melt(dt, id.vars = c('date', 'value'))
dt1 <- dt1[, .(value = sum(value)), .(date, variable)]

现在,如果您想要数据框列表,您可以使用split

split(dt1, dt1$variable)

推荐阅读