[R] {survival} Surv() : Time variable is not numeric というエラーの原因と対策

原因

survival::Surv()の引数time, time2は数値型であることを要請する。

しかしながらRでread.csv()を使用して日付データを読み込むと、data.frame上はfactor型となる。このままdata.frameの日付データをfactor型ではなく数値型に変換せずにSurv()を実行すると以下のエラーメッセージが出力され処理が失敗することになる。

“Time variable is not numeric”

対策

データフレームの日付データをfactor型 → 日付型 → 数値型という変換をしてからSurv()を実行すればよい。

例えばデータフレーム(df)の列(time,time2)に日付データが入っている場合、以下のように記述する。

time_numeric <- as.numeric(as.Date(df$time))
time2_numeric <- as.numeric(as.Date(df$time2))
so <- Surv(time=time_numeric, event=event)
so <- Surv(time=time_numeric, time2=time2_numeric, event=event)

コメント