【发布时间】:2014-05-28 04:34:41
【问题描述】:
在dcast.data.table 的帮助文件中,有一条说明已经实现了一项新功能:“dcast.data.table 允许 value.var 列属于列表类型”
我认为这意味着一个列表中可以有多个值变量,即采用以下格式:
dcast.data.table(dt, x1~x2, value.var=list('var1','var2','var3'))
但是我们得到一个错误:'value.var' must be a character vector of length 1.
是否有这样的功能,如果没有,还有其他单线替代方案吗?
编辑:回复下面的 cmets
在某些情况下,您希望将多个变量视为value.var。例如,假设 x2 包含 3 个不同的周,并且您有 2 个值变量,例如盐和糖的消耗量,并且您希望将这些变量转换为不同的周。当然,您可以将 2 个值变量“融合”到一列中,但是当您可以像 reshape 那样在一个函数中完成时,为什么还要使用两个函数呢?
(注意:我还注意到reshape 不能像dcast 那样将多个变量视为时间变量。)
所以我的意思是,我不明白为什么这些函数不允许在value.var 或time.var 中灵活地包含多个变量,就像我们允许id.var 中的多个变量一样。
【问题讨论】:
-
您误解了文档。 data.table 列可以是 list 类型,这样的列现在可以是
value.var列。 -
@Arun,我不完全确定这将是一个巨大的改进(或者我可能没有正确理解这个问题)。有多个
value.vars 的事实不是意味着数据没有完全“融化”吗?亚历克斯:您能否更新您的问题以跳出假设领域,并举例说明您可能想对这些多个value.vars 做什么?也许你在想我在this answer 所做的事情? -
@Arun 我已经详细说明了这篇文章的目的和我的询问。
标签: r data.table reshape reshape2