R: discSurv::dataLongの注意点

先日紹介したR: discrete time hazard modelで利用したdataLongコマンドではまりました。timeColumnに指定したカラム名は間違っていないのですが、エラーメッセージがでてきます。

> cohort4 <- dataLong(cohort3, timeColumn="outcome_day_var", censColumn="outcome_var")

Error in dataLong(cohort3), timeColumn = "outcome_day_var", :
*timeColumn* is not available in *dataSet*! Please specify the correct column of observed items.

エラーメッセージを検索してみましたが、解決策を記載しているページは見つかりません。途方にくれた時は、初心に戻って、マニュアルを確認することにすると・・・原因がわかりました。

Usage

dataLong(dataSet, timeColumn, censColumn, timeAsFactor=TRUE,
remLastInt=FALSE, aggTimeFormat=FALSE, lastTheoInt=NULL)

Augments

dataSet: Original data in short format. Must be of class “data.frame”.

timeColumn: Character giving the column name of the observed times. It is required that the observed times are discrete (integer).

censColumn: Character giving the column name of the event indicator. It is required that this is a binary variable with 1==”event” and 0==”censored”.

timeColumnは、integerでないといけないのです。私が使っていたデータセットでは、outcome_day_varがnumericであったため、「integerではないよ」と怒られていたわけです。下記の通り、integerに設定すれば、問題なく実行できました。

cohort3$outcome_day_var <- as.integer(cohort3$outcome_day_var)

dataLongを利用する時は、あらかじめtimeColumnに対応する変数をintegerに変換しておきましょう!

ちなみに・・・dataSetはdata.tableだと失敗します。data.frameに変換しておかないといけません。ご注意下さい。

困った時はマニュアルです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください