r - 转置数据表

标签 r data.table

在数据计算结束后有效转换 data.table 的好方法是什么

nrow=500e3
ncol=2000
m <- matrix(rnorm(nrow*ncol),nrow=nrow)
colnames(m) <- c('foo',seq(ncol-1))
dt <- data.table(m)
df <- as.data.frame(m)
dt <- t(dt)  #take a long time and converts the data table to a matrix

计算时间
1. to transpose the matrix
system.time(mt <- t(m))
   user  system elapsed
 20.005   0.016  20.024

2. to transpose the dt
system.time(dt <- t(dt))
user  system elapsed
32.722  15.129  47.855

3. to transpose a df
system.time(df <- t(df))
user  system elapsed
32.414  15.357  47.775

最佳答案

这是一个很老的问题,从那时起data.table已添加/导出 transpose用于转置列表。在性能方面,它优于 t除了矩阵(我认为这是可以预料的)

system.time(t(m))
 #   user  system elapsed 
 # 23.990  23.416  85.722 
system.time(t(dt))
 #   user  system elapsed 
 # 31.223  53.197 195.221 
system.time(t(df))
 #   user  system elapsed 
 # 30.609  45.404 148.323 
system.time(setDT(transpose(dt)))
 #   user  system elapsed 
 # 42.135  38.478 116.599

关于r - 转置数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20670053/

相关文章:

r - R 中工作区背后的哲学是什么?

r - 在 Linux 容器上登录到 Windows 域

r - 如何在data.table中按变量分组并按随机顺序列出?

r - 当 j 的整体结果无论如何都是列表时,我们是否需要将 j 的单个元素转换为列表?

r - fill=TRUE 的简单 fread 操作失败

r - 解析错误(outFile): unexpected end of input - bug in package install, and how to fix

rcorr() 相关函数

python - 我们如何在 Python 中实现 R 的扩展函数的功能?

r - 合并和替换两个 data.tables 中的值

r - 满足条件时将 data.table 列值向前推进