DT <- data.table(a = c(1, 3), b = c(5, 2))
DT1 <- stack(DT)
> stack(DT1)
values ind
1 1 a
2 3 a
3 5 b
4 2 b
现在,它已更改为data.frame。当然,我可以使用setDT(DT1)
将其更改回data.table,
> DT1
values ind
1: 1 a
2: 3 a
3: 5 b
4: 2 b
我现在想,在data.table中还有其他方法可以执行**stack**
操作(或类似stack function
更高效的操作)并直接返回data.table而不是data.frame吗?
谢谢。
答案 0 :(得分:0)
您可以使用包gather
tidyr
library(tidyr)
DT <- data.table(a = c(1, 3), b = c(5, 2))
DT1 <- gather(DT, ind, values, a:b)
第二个参数是新“key”变量的名称,第三个参数是新“value”变量的名称,最后一个参数是要收集的列(在本例中为全部)。此外,gather
会自动为data.tables调用melt
的更快版本。