Rで水平ボックスプロットを視覚化する


8

このようなデータセットがあります。データはアンケートを通じて収集されたので、いくつかの予備的なデータ分析を行います。

windows <- c("yes", "no","yes","yes","no")
sql     <- c("no","yes","no","no","no")
excel  <- c("yes","yes","yes","no","yes")
salary <- c(100,200,300,400,500 )

test<- as.data.frame (cbind(windows,sql,excel,salary),stringsAsFactors=TRUE)
test[,"salary"] <- as.numeric(as.character(test[,"salary"] ))

データセットに結果変数(給与)といくつかの入力変数(ツール)があります。次のように水平ボックスプロットを視覚化するにはどうすればよいですか。 ここに画像の説明を入力してください

回答:


3

いくつかの偽のデータセットを作成することから始めましょう。

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

次に、meltreshapeパッケージの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)

これにより、次のようなプロットが作成されます。

左側のペインには、棒グラフで表されたさまざまなソフトウェアの使用状況の数が表示され、右側のペインには、箱ひげ図で表された使用ソフトウェアによってグループ化された給与の分布が表示されます。


2

ソフトウェア情報を含む列を作成する必要があります。たとえば、ソフトウェアに名前を付け、給与列に対応する給与があるため、次のようになります。

 Software   Salary
 Microsoft  100
 Microsoft  300
 Microsoft  400
 SQL        200

など...その後、以下のコードでプロットできます

p <- ggplot(test, aes(factor(software), salary))
p + geom_boxplot() + coord_flip()

良いですが、どうすればソフトウェアカラムを作成できますか?
ハミーダ2015年

それはあなた自身で研究しなければならないことです。私はあなたのデータセットがどのように見えるのかわかりません-メルト機能があなたに役立つかもしれません。
Lauren Goodwin

@LaurenGoodwinこの質問に対する私の答えは、gridExtraを使用してバープロットとボックスプロットを並べてプロットし、要求された視覚化を生成します。
Nitesh 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.