いくつかの偽のデータセットを作成することから始めましょう。
software = sample(c("Windows","Linux","Mac"), n=100, replace=T)
salary = runif(n=100,min=1,max=100)
test = data.frame(software, salary)
これにより、次のtest
ようなデータフレームが作成されます。
software salary
1 Windows 96.697217
2 Linux 29.770905
3 Windows 94.249612
4 Mac 71.188701
5 Linux 94.028326
6 Linux 7.482632
7 Mac 98.841689
8 Mac 81.152623
9 Windows 54.073761
10 Windows 1.707829
コメントに基づいた編集上記の形式でデータがまだ存在しない場合は、この形式に変更できます。元の質問で提供されたデータフレームを取り、データフレームがと呼ばれると仮定しましょうraw_test
。
windows sql excel salary
1 yes no yes 100
2 no yes yes 200
3 yes no yes 300
4 yes no no 400
5 no no yes 500
次に、melt
のreshape
パッケージのfunction /メソッドを使用してR
、最初にデータフレームtest
(最終的なプロットに使用される)を次のように作成します。
# use melt to convert from wide to long format
test = melt(raw_test,id.vars=c("salary"))
# subset to only select where value is "yes"
test = subset(test, value == 'yes')
# replace column name from "variable" to "software"
names(test)[2] = "software"
これで、test
次のようなdatframeが得られます。
salary software value
1 100 windows yes
3 300 windows yes
4 400 windows yes
7 200 sql yes
11 100 excel yes
12 200 excel yes
13 300 excel yes
15 500 excel yes
データセットを作成した。プロットを生成します。
まず、使用率を表すソフトウェアの数に基づいて、左側に棒グラフを作成します。
p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()
次に、右側に箱ひげ図を作成します。
p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()
最後に、これらの両方のプロットを隣同士に配置します。
require('gridExtra')
grid.arrange(p1,p2,nrow=1)
これにより、次のようなプロットが作成されます。