私は 1 日あたりの出会いのために enc.per.day という data.table を持っています。サービスの日付とその日に受診した患者数を指定する 2403 行があります。あらゆるタイプの平日に受診する患者数の中央値を確認したかったのです。
enc.per.day[,list(patient.encounters=median(n)),by=list(weekdays(DOS))]
その行はエラーを出します
(enc.per.day, , list(patient.encounters = median(n)) のエラー
[.data.table
: j の列は各グループの一貫した型に評価されません: グループ 4 の結果は列 1 の型 'integer' を持っていますが、期待しています「ダブル」と入力
以下はすべてうまくいきます
tapply(enc.per.day$n,weekdays(enc.per.day$DOS),median)
enc.per.day[,list(patient.encounters=round(median(n))),by=list(weekdays(DOS))]
enc.per.day[,list(patient.encounters=median(n)+0),by=list(weekdays(DOS))]
何が起こっている?コードが機能しない理由を理解するのに長い時間がかかりました。
ちなみに、基礎となるベクトル enc.per.day$n は整数です
storage.mode(enc.per.day$n)
「整数」を返します。さらに、data.table のどこにも NA はありません。