2017-09-27 3 views
-3

私はこのようなデータフレームがあります。Boxploxデータフレーム

2015 | 2016 | 2017 
-----+------+------ 
1.2 | 5.2 | 5.6 
9.1 | 3.7 | 4.3 
.../... 

を、私は、各年の列の値をプロットボックスにしたいと思います。

私が見つけた唯一の方法は手動に(CSVファイルからインポート)データフレームを変更することです:

Year | Value 
-----+------- 
2015 | 1.2 
... | ... 
2016 | 5.2 
... | ... 
2017 | 5.6 
... | ... 

と(CPVは、私のデータフレームの名前である場合)を使用します。

ggplot(CPV, aes(x=factor(Year), y=Time)) + geom_boxplot() 

最初の質問:データフレームの最初の形式でも同じ結果が得られますか?

2番目の質問:私は「値」の列を持っている場合、私は同じプロットを持つことができ、そして各年について、この値の出現箇所の数:

Value | 2015 | 2016 | ... 
------+------+------+--- 
1  | 0 | 5 | ... 
1.1 | 4 | 1 | ... 

ANSWER

  1. ボックスプロットのテーブルの2番目の形式を使用します。

  2. このフォームにアクセスするには、data.tableパッケージのmelt機能を使用してください。

+0

[再現性のあるデータ]を含めてください(https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – lmo

+0

最初の質問に対する答えはNOです。あなたが示した2つ目の形式は、データの「溶融」形式です(それは正しい方法です)。 2番目の質問では、発生したデータを再度溶かしてボックスプロットを作成することができます。 'value'カラムも必要ですか? –

+0

最初の部分の可能な複製:[同じグラフ上でggplot2を使って2つの変数を線としてプロットする](https://stackoverflow.com/questions/3777174/plotting-two-variables-as-lines-using-ggplot2-on-同じグラフ)。 2番目の質問は、もう2番目の質問です。 – Henrik

答えて

1
df <- data.frame("2015" = c(1.2, 9.2), 
      "2016" = c(5.2, 3.7), 
      "2017" = c(5.6, 4.3)) 
names(df2) <- c("Year", "Value")    # new 
# setnames(df, as.character(c(2015:2017))) # old 

reshape2は、データフレームの変換を行います。

library(reshape2) 
df2 <- melt(df) 
setnames(df2, c("Year", "Value")) 
df2 

あなたが前に行ったようにその後は、箱ひげ図を生成することができます。

ggplot(df2, aes(x = factor(Year), y = Value)) + geom_boxplot() 
+0

'setnames'は基底R関数ではありません。あなたの答えに使用しているパッケージをリストアップしてください。 – lmo

+0

'名前(df2)< - c("年 "、"値 ")'はうまくいきます。 – gregseth

+0

アドバイスをいただきありがとうございます!私はちょうどそれを編集しました。 –