如何对R data.table进行转置?为什么';工作?
我有下面的R数据表如何对R data.table进行转置?为什么';工作?,r,data.table,transpose,R,Data.table,Transpose,我有下面的R数据表 library(data.table) mtcars = as.data.table(mtcars) dt = colSums(mtcars) > dt mpg cyl disp hp drat wt qsec vs 642.900 198.000 7383.100 4694.000 115.090 102.952 571.160 14.000 am
library(data.table)
mtcars = as.data.table(mtcars)
dt = colSums(mtcars)
> dt
mpg cyl disp hp drat wt qsec vs
642.900 198.000 7383.100 4694.000 115.090 102.952 571.160 14.000
am gear carb
13.000 118.000 90.000
我想对data.tabledt
进行如下重塑:
> transpose
column1 column2
mpg 642.900
cyl 198.000
disp 7373.100
hp 4694.000
drat 115.090
wt 102.952
qsec 571.160
vs 14.000
am 13.000
gear 118.000
carb 90.000
函数t()
似乎无法按预期工作
transpose = t(dt)
我怀疑有一种快速的方法可以使用
melt()
和dcast()
,但我不确定如何定义每一列,即column1
和column2
我发现这是可行的:
df = as.data.table(t(as.matrix(dt)))
它甚至保留了名称A
dplyr
解决方案:
library(dplyr)
library(data.table)
mtcars <- data.table(mtcars) # make data.table
class(mtcars) # check that it is a data.table
mtcars %>% # take the data.table
summarise_all(funs(sum)) %>% # get the sum of each column
gather(variable, sum) # gather all columns
dt
不是数据表。试试data.table(dt)
Ah,我明白了。简单地强制转换dt=as.data.table(colSums(mtcars))
似乎会像Rich所说的那样删除列名。例如,如果您想使用data.table语法,可以使用melt(mtcars)[,sum(value),by=variable]
。@DavidArenburg,post-as-answer?如果您确实想使用colSums
,请尝试stack(dt)
。不过,对于data.table来说,这一点也不惯用。
variable sum
1 mpg 642.900
2 cyl 198.000
3 disp 7383.100
4 hp 4694.000
5 drat 115.090
6 wt 102.952
7 qsec 571.160
8 vs 14.000
9 am 13.000
10 gear 118.000
11 carb 90.000