1

この問題を再現するテスト データ セットを作成しました。

Date    Percent
2012-01 3.00%
2012-02 43.00%
2012-03 54.00%
2012-04 43.00%
2012-05 43.00%
2012-06 23.00%
2012-07 12.00%
2012-08 
2012-09 
2012-10 
2012-11 
2012-12 

これらのパーセンテージは、csv ファイルに小数値を入力し、PercentMicrosoft Excel を介して列の形式をパーセンテージに変換することによって作成されました。

このデータセットをグラフ化しようとするとggplot

data <- read.csv("GCdataViz/test2.csv")
p <- ggplot(data, aes(x=Date, y=Percent, group=1)) + 
  geom_point(size = 3) 
p

私はこのグラフを取得します

ここに画像の説明を入力

ご覧のとおり、null 値がプロットされており、Y 軸も奇数です... 3% のデータポイントが 23% の上にプロットされています。ggplotパーセンテージで軸を標準化するのはあまりうまくいかないようです。パーセンテージ値を知らないと仮定して、Y 軸の正しい範囲を設定できる方法はありますか (パーセンテージ列以外の実際のデータセットに抽象化されていると仮定します)。

4

2 に答える 2

4

Percentは係数です。デフォルトでは、因子ラベルはアルファベット順です。したがって、 の3.00%後に続き12.00%ます。Percentの値を数値に変換すると機能します。

データ:

data <- read.table(text = "Date    Percent
2012-01 3.00%
2012-02 43.00%
2012-03 54.00%
2012-04 43.00%
2012-05 43.00%
2012-06 23.00%
2012-07 12.00%
2012-08 
2012-09 
2012-10 
2012-11 
2012-12 ", header = TRUE, fill = TRUE)

Percent2数値を持つ新しい変数 を作成します。

data <- transform(data,
                  Percent2 = replace(as.numeric(gsub("%", "", Percent)),
                                     Percent == "", 0))

#       Date Percent Percent2
# 1  2012-01   3.00%        3
# 2  2012-02  43.00%       43
# 3  2012-03  54.00%       54
# 4  2012-04  43.00%       43
# 5  2012-05  43.00%       43
# 6  2012-06  23.00%       23
# 7  2012-07  12.00%       12
# 8  2012-08                0
# 9  2012-09                0
# 10 2012-10                0
# 11 2012-11                0
# 12 2012-12                0

プロット:

library(ggplot2)
ggplot(data, aes(x = Date, y = Percent2)) + 
  geom_point(size = 3) 

ここに画像の説明を入力

于 2013-08-11T08:36:06.137 に答える
2

Sven の答えはほとんどの場合 OP を取得しますが、OP は元の Excel シートで空白だった値に対してプロットされるポイントをまったく望んでいないと思います。これは、次の 2 つの方法のいずれかで実行できます。

  • Sven のソリューションを使用し、続いてdata$Percent2[data$Percent2==0] <- NA. (ゼロに等しい実パーセント値と空白値がある場合、これは失敗します。)

  • 私の意見では、元の Excel シートを .csv ファイルとして保存するときは、パーセンテージ列が次のようにフォーマットされていることを確認してくださいNumber(つまり、Format -> Cellsを選択します)。Numberファイルの小数点以下の桁数は、画面に表示される数だけです。たとえば、値のあるセルは、小数点以下 1 桁のみを表示するか=1/3のようにエクスポートされます。0.3明らかに、R で小数ではなくパーセンテージ値を表示するには、100 を掛ける必要があります。R は空白を としてインポートするためNA、それ以上の処理を行う必要はありません。

于 2013-08-11T14:37:44.213 に答える