我需要获取所有列的col sum,并将结果保存在一个具有colnames和它们的和为两列的数据框中。但是,如果我这样做,列名似乎将成为索引,而不是col本身。
demo=data.frame(a=runif(10),b=runif(10,max=2),c=runif(10,max=3))
as.data.frame(colSums(demo))
Run Code Online (Sandbox Code Playgroud)
不良结果:
colSums(demo)
a 4.083571
b 11.698794
c 14.082574
Run Code Online (Sandbox Code Playgroud)
预期结果:
colname colSums(demo)
a 4.083571
b 11.698794
c 14.082574
Run Code Online (Sandbox Code Playgroud)
如何在保持原样的同时向左侧的列添加标题?谢谢。
一种可能是将结果与 t()
data.frame(t(colSums(demo)))
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)a b c colSums.demo. 5.782475 10.46739 18.46751
要更改输出中行的名称,我们可以使用rownames
,例如这样:
`rownames<-`(data.frame(t(colSums(demo))), "myColsum")
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)a b c myColsum 5.782475 10.46739 18.46751
您可以使用stack()
和实现所需的输出setNames()
:
setNames(nm=c('colname','colSums(demo)'),stack(colSums(demo))[2:1]);
## colname colSums(demo)
## 1 a 4.083571
## 2 b 11.698794
## 3 c 14.082574
Run Code Online (Sandbox Code Playgroud)
> demo = data.frame(a=runif(10),b=runif(10,max=2),c=runif(10,max=3))
> df <- data.frame(colname = names(demo),colSums_demo=colSums(demo))
> print(df, row.names=F)
colname colSums_demo
a 4.754546
b 12.488904
c 18.152095
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4290 次 |
最近记录: |