如何根据另一栏中的特征绘制比率

时间:2010-08-27 09:55:38

标签: r

我是R和ggplot2的新手 - 任何建议都值得赞赏!

每年我都会尝试绘制ggplot中不同技能组之间的收入比率。即我想在同一个地块中获得收入水平Level_4 / Level_3,Level_4 / Level_2和Level_4 / Level_1。

数据框列标题是技能(级别1到4),年份和平均收入

这是我数据框的摘录:

   Skills Year MeanIncome


1  Level_1 1970        9330.00
2  Level_1 1973       11525.00
3  Level_1 1976       12740.00
4  Level_1 1979       15533.33
14 Level_2 1970       10171.00
15 Level_2 1973       12400.00
16 Level_2 1976       12012.50
17 Level_2 1979       18550.00
27 Level_3 1970        8580.00
28 Level_3 1973       12433.33
29 Level_3 1976       14673.33
30 Level_3 1979       14400.00
40 Level_4 1973       35000.00
41 Level_4 1976       30000.00
42 Level_4 1979       36000.00

提前感谢任何建议。

(为易读性而编辑)

2 个答案:

答案 0 :(得分:0)

您可以通过重新整形数据帧(此处称为数据)来计算值:

require(reshape)
tmp <- cast(Data,Skills~Year,value="MeanIncome")
ratio <- tmp[,5]/ tmp[,2:4]
rownames(ratio) <- tmp$Year

比率是您可以绘制的数据。由于我真的不明白你希望你的情节如何,我无法帮助你。但是使用比率数据框架并不困难。


编辑:只是为了帮助TS,我包含了我以前在数据中读取的代码:

Data <- read.table(textConnection(
"Skills Year MeanIncome
Level_1 1970 9330.00
Level_1 1973 11525.00
Level_1 1976 12740.00
Level_1 1979 15533.33
Level_2 1970 10171.00
Level_2 1973 12400.00
Level_2 1976 12012.50
Level_2 1979 18550.00
Level_3 1970 8580.00
Level_3 1973 12433.33
Level_3 1976 14673.33
Level_3 1979 14400.00
Level_4 1973 35000.00
Level_4 1976 30000.00
Level_4 1979 36000.00")
, header=T)

答案 1 :(得分:0)

谢谢,这帮了很多忙。我修改了你的答案以得到我想要的东西:

require(reshape)
tmp <- cast(data,Year~Skills,value="Meanincome")
ratio <- tmp[,3:5]/tmp[,2]
rownames(ratio) <- tmp$Year