1

以下のデータセットを使用して、x 軸に男性の test_scores を、y 軸に女性の test_scores を表示する ggplot2 の散布図を作成したいと思います。男性と女性を分割し、x 軸に日付 ("dts") を配置する geom_line プロットを簡単に作成できます。

library(tidyverse)

#create data

dts <- c("2011-01-02","2011-01-02","2011-01-03","2011-01-04","2011-01-05",
"2011-01-02","2011-01-02","2011-01-03","2011-01-04","2011-01-05")

sex <- c("M","F","M","F","M","F","M","F","M","F")

test <- round(runif(10,.5,1),2)

semester <- data.frame("dts" = as.Date(dts), "sex" = sex, "test_scores" = 
test)

#show the geom_line plot
ggplot(semester, aes(x = dts, y = test, color = sex)) + geom_line()

時系列が1つだけのようですが、ggplot2は、長い形式よりも広い形式のデータの方が優れています。たとえば、「male_scores」と「female_scores」という 2 つの列を簡単に作成して、それらを相互にプロットすることはできますが、データを整理して長い形式に保ちたいと考えています。

乾杯とありがとう。

4

2 に答える 2

3

あなたは片付けすぎました。データを整理するということは、データをできるだけ長くするメカニズムだけでなく、必要なだけ広くすることでもあります。

たとえば、動物の目撃情報に X と Y の位置がある場合、2 つの行はありません。1 つは「X」を含む「ラベル」列で、「値」列には X 座標があり、もう 1 つは「値」列に「Y」があります。 「ラベル」列と「値」列の Y 座標 - キー値ストアにデータを実際に保存する場合を除きますが、それは別の話です...

データを広げて、男性と女性のテスト スコアを と に入れるtest_core_maletest_score_female、散布図の x と y の美学になります。

于 2017-01-12T16:25:46.767 に答える
0

データを長く保持することの問題は、指定された Y 値に対応する X 値がないことです。この理由は、データセットの構造です --

         dts  sex  test_scores
1 2011-01-02   M        0.67
2 2011-01-02   F        0.78
3 2011-01-03   M        0.58
4 2011-01-04   F        0.58
5 2011-01-05   M        0.51

ypu がコードを使用する場合 -

ggplot(semester, aes(x = semester$test_scores[semester$sex=='M',] ,
                     y =  semester$test_scores[semester$sex=='F',], 
                     color = sex)) + geom_point()

GGplot はエラーを発生させます。主な理由は、男性のスコアをサブセット化することによって、そのサブセットに対応する女性のスコアがないことです。まず、データを日付レベルに折りたたむ必要があります。あなたが正しく指摘しているように、これはその時点では長い形式ではありません。

幅広いデータセットを作成するこの 1 回限りのプロットをお勧めします。それを行うには複数の方法がありますが、それは別のトピックです。

于 2017-01-12T16:39:25.583 に答える