5

私はRとggplot2が初めてです。飲料の消費データを含む csv ファイルがあります。最初の列は年で、次の 9 列はコーヒー、紅茶、ソーダなどの飲料の種類で、その行の年の値の消費量の値があります。データは 41 年間をカバーしています。私はこれを研究し、多くのことを試してきました。ggplot を使用して、任意の種類の飲料のドット プロットを簡単に作成できます。

ただし、各プロットの x 軸に年がある水平積み上げドット プロットを作成したいと考えています。つまり、コーヒーのプロットがあり、そのすぐ下にお茶のプロットがあります。ファセットを使用したいと思います。また、データを再構成して 3 つの列を作成したいと考えています。1 つは年、もう 1 つは「カテゴリ」(つまり、コーヒー、紅茶、ソーダなど) で、最後の 1 つは値です。私の考えでは、その形式でデータを取得すると、ファセットを使用するのは簡単になるはずです。

問題は、データをその形式で取得する方法がわからないことです。データの最初の数行は次のようになります。

Year    Whole Milk  Other Milk  Total Milk  Tea Coffee  Diet Soda   Regular Soda    Total Soda  Juice
1970    25.5    5.8 31.3    6.8 33.4    2.1 22.2    24.3    5.5
1971    25  6.3 31.3    7.2 32.2    2.2 23.3    25.5    5.8
1972    24.1    6.9 31  7.3 33.6    2.3 23.9    26.2    6

誰かが私を助けることができますか?

dputデータは次のとおりです。

structure(list(Year = 1970:1972, `Whole Milk` = c(25.5, 25, 24.1
), `Other Milk` = c(5.8, 6.3, 6.9), `Total Milk` = c(31.3, 31.3, 
31), Tea = c(6.8, 7.2, 7.3), Coffee = c(33.4, 32.2, 33.6), `Diet Soda` = c(2.1, 
2.2, 2.3), `Regular Soda` = c(22.2, 23.3, 23.9), `Total Soda` = c(24.3, 
25.5, 26.2), Juice = c(5.5, 5.8, 6)), .Names = c("Year", "Whole Milk", 
"Other Milk", "Total Milk", "Tea", "Coffee", "Diet Soda", "Regular Soda", 
"Total Soda", "Juice"), class = "data.frame", row.names = c(NA, 
-3L))
4

1 に答える 1

6

私がggplot2でよく使う「迷ったら溶かす」という言葉があります。reshape パッケージには、まさにこれを行う関数 melt() があります。

tmp <- structure(list(Year = 1970:1972, `Whole Milk` = c(25.5, 25, 24.1
), `Other Milk` = c(5.8, 6.3, 6.9), `Total Milk` = c(31.3, 31.3, 
31), Tea = c(6.8, 7.2, 7.3), Coffee = c(33.4, 32.2, 33.6), `Diet Soda` = c(2.1, 
2.2, 2.3), `Regular Soda` = c(22.2, 23.3, 23.9), `Total Soda` = c(24.3, 
25.5, 26.2), Juice = c(5.5, 5.8, 6)), .Names = c("Year", "Whole Milk", 
"Other Milk", "Total Milk", "Tea", "Coffee", "Diet Soda", "Regular Soda", 
"Total Soda", "Juice"), class = "data.frame", row.names = c(NA, 
-3L))

library(reshape) 

melt(tmp, id.vars="Year")

 Year     variable value
1  1970   Whole Milk  25.5
2  1971   Whole Milk  25.0
3  1972   Whole Milk  24.1
4  1970   Other Milk   5.8
5  1971   Other Milk   6.3
6  1972   Other Milk   6.9
7  1970   Total Milk  31.3
8  1971   Total Milk  31.3
9  1972   Total Milk  31.0
10 1970          Tea   6.8
11 1971          Tea   7.2
12 1972          Tea   7.3
13 1970       Coffee  33.4
...
于 2012-10-11T20:26:14.110 に答える