31

これは、この質問に対する疑似フォローアップです:なぜ ggplot は null パーセンテージ データ ポイントをグラフ化するのですか?

これが私のデータセットだとしましょう:

Date        AE      AA      AEF     Percent
1/1/2012    1211    1000    3556    0.03
1/2/2012    100     2000    3221    0.43
1/3/2012    3423    10000   2343    0.54
1/4/2012    10000   3000    332     0.43
1/5/2012    2342    500     4435    0.43
1/6/2012    2342    800     2342    0.23
1/7/2012    2342    1500    1231    0.12
1/8/2012    111     2300    333 
1/9/2012    1231    1313    3433    
1/10/2012   3453    5654    222 
1/11/2012   3453    3453    454 
1/12/2012   5654    7685    3452 

> str(data)
'data.frame':   12 obs. of  5 variables:
 $ Date   : Factor w/ 12 levels "10/11/2012","10/12/2012",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ AE     : int  1211 100 3423 10000 2342 2342 2342 111 1231 3453 ...
 $ AA     : int  1000 2000 10000 3000 500 800 1500 2300 1313 5654 ...
 $ AEF    : int  3556 3221 2343 332 4435 2342 1231 333 3433 222 ...
 $ Percent: num  0.03 0.43 0.54 0.43 0.43 0.23 0.12 NA NA NA ...

「日付」列が数値または文字型ではなく日付型であることを伝える必要があります (これは、データ入力の「日付」列を as.Date() を使用して実際の日付に変換する必要があるためです) 、データセットの列名がわからないことを想定しています)。

is.numeric(data[[1]]) returns False
is.character(data[[1]]) returns False

Excelで「日付」列を作成し、列を「日付」形式でフォーマットしてから、ファイルをcsvとして保存しました。これは R ではどのような型ですか? TRUE を返す上記のような式を探します。

4

8 に答える 8

33

Use inherits to detect if argument has datatype Date:

is.date <- function(x) inherits(x, 'Date')

sapply(list(as.Date('2000-01-01'), 123, 'ABC'), is.date)
#[1]  TRUE FALSE FALSE

If you want to check if character argument can be converted to Date then use this:

is.convertible.to.date <- function(x) !is.na(as.Date(as.character(x), tz = 'UTC', format = '%Y-%m-%d'))

sapply(list('2000-01-01', 123, 'ABC'), is.convertible.to.date)
# [1]  TRUE FALSE FALSE
于 2016-05-06T01:47:10.240 に答える