0

私は新しい R ユーザーであり、Linux で R を使用する必要があります。非常に奇妙な問題に直面しています。専門家のユーザーの何人かが解決策を提供してくれることを願っています。:)

私は、200,000 を超える観測/参加者と 300 を超える変数を含む大規模なデータセットを持っています。これには、さまざまなベースライン データセットからサブセット化して作業データセットを作成することが含まれます。

私の問題は、長さコマンドを実行すると、重要な変数が時々変更されることです。「Withdrawlevel」は変化する変数です。この変数は次のようになります。

describe(tbl$Withdrawlevel)
tbl$Withdrawlevel
      n missing  unique    Mean
   2833  218988       3   1.474

次に、特定の基準を満たす参加者の数を取得することに関心があるため、次のようないくつかの長さのコマンドを実行します。例えば:

length(which(tbl[,'Reg_age_dob']>=18 & as.Date(tbl[,'QuestionnaireEndDate'])>='2013-07-21' & as.Date(tbl[,'QuestionnaireEndDate'])< '2013-07-28' & (is.na(tbl$Withdrawlevel) | (tbl$Withdrawlevel!=3) & (tbl$WithdrawDate<'2013-07-28')) | ((tbl$Withdrawlevel=3) & (tbl$WithdrawDate>='2013-07-28'))  )) 

そして、Withdrawlevel 変数が次のように変更されます。

describe(tbl$Withdrawlevel)                                                   tbl$Withdrawlevel
      n missing  unique    Mean
 221821       0       1       3

上記の長さコマンドは、この変数に対して何かを行っていますか?私の理解では、そうすべきではないということです。また、このデータを使用して多くの同様のコマンドを実行しましたが、この問題は毎回発生しません。

何が起こっているのか、この問題をどのように解決できるのかについての洞察はありますか?

4

3 に答える 3

2

tbl$Withdrawlevel=33のすべての観測値に値を割り当てますtbl$Withdrawlevel。あなたが意味しtbl$Withdrawlevel==3た。

于 2013-07-30T21:33:24.593 に答える
1

(ジョシュアの答えは正しいです。) 将来的には、次を使用してこの種のエラーから身を守ることができますwith

with( tbl, length( which(Reg_age_dob >=18 & 
      as.Date(QuestionnaireEndDate) >='2013-07-21' & 
      as.Date(QuestionnaireEndDate) < '2013-07-28' & 
      ( is.na(tbl$Withdrawlevel) | (Withdrawlevel!=3) & ( WithdrawDate <'2013-07-28') )  | 
      ( (tbl$Withdrawlevel=3) & ( WithdrawDate >='2013-07-28') )  )
                   )
     )

重要なのは、これにはデータ オブジェクトが破損する危険性がなく、理解しやすいということです。

于 2013-07-30T21:55:45.513 に答える