r - 使用 geom_bar 为堆积条形图格式化数据
问题描述
嗨,我想像这样在同一个 geom_bar 上绘制不同的值。为此,如果我理解正确,我必须格式化我的数据。我从这个数据集开始:
>MyDT
Name N0 N1 N2 N9
1: Novo_M 250617 0 586984 395412
2: Novo_Y 343741 0 804612 84660
3: Novo_P 353382 0 795977 83654
我想这样格式化它:
Name Val Categorie
Novo_M 250617 N0
Novo_M 0 N1
Novo_M 586984 N2
Novo_M 395412 N9
Novo_Y 343741 N0
Novo_Y 0 N1
Novo_Y 804612 N2
Novo_Y 84660 N9
Novo_P 353382 N0
Novo_P 0 N1
Novo_P 795977 N2
Novo_P 83654 N9
但是,当我运行此代码时,我有一个我理解的意外行为,但我无法使用上面的确切格式:
Colnames<-colnames(MyDT)
NewData.list<-lapply(1:nrow(StatsAll),function(x){
Row<-StatsAll[x,]
data.frame(DivisionName=Row[,1],values=c(Row[,2],Row[,3],Row[,4],Row[,5]),Categories=Colnames[c(2,3,4,5)])
})
我也尝试了以下但没有成功
Colnames<-colnames(MyDT)
NewData.list<-lapply(1:nrow(StatsAll),function(x){
Row<-StatsAll[x,]
data.frame(DivisionName=Row[,1],values=c(Row[,x]),Categories=Colnames[c(2,3,4,5)])
})
干杯,埃迪
解决方案
试试下面的代码
> melt(dt, id.var = "Name", value.name = "Val", variable.name = "Categorie")[order(Name)]
Name Categorie Val
1: Novo_M N0 250617
2: Novo_M N1 0
3: Novo_M N2 586984
4: Novo_M N9 395412
5: Novo_P N0 353382
6: Novo_P N1 0
7: Novo_P N2 795977
8: Novo_P N9 83654
9: Novo_Y N0 343741
10: Novo_Y N1 0
11: Novo_Y N2 804612
12: Novo_Y N9 84660
推荐阅读
- rspec - 如何在rspec中调用位于不同位置的ruby类
- python-3.x - 使用 Boto3 上传 Gzip 文件
- arrays - 如何在子切片中分割Go中的切片
- android - 寄存器的类型为 Long(High Half),但预期为 Long(Low Half)
- c++ - 对 end 的引用不明确
- html - 有什么方法可以在 Angular 材料中使用 mat-table 编辑特定的表格列
- php - 使用相同的 php 邮件程序脚本的多个表单
- javascript - 仅将时间戳 X 轴图表格式化为 24 小时
- 3dsmax - 如何在物体上应用半透明的彩色材料
- python - 我的 CNN 模型在我的 GPU 上使用了太多内存。如何在我的 CPU 内存上托管一些张量?