この質問には複数のステップがありますので、ご容赦ください。
前提 私が作成したスクリプトは、43000 列のスプレッドシートを再コーディングします。各列は、177 の観測値を持つ一意の変数です。観測値はすべて異なり、10 進数です。
個々の変数はそれぞれ 2 つのグループに再コード化されます。カットオフポイントに基づいています。このカットオフ ポイントは、私が書いた以前のスクリプトから生成されたものです。各変数/列に関連付けられたカットオフ ポイントが 1 つあります。したがって、カットオフは一意であり、43000 カットオフ番号のリストから供給されます。これに基づいて、列内の数値は 2 つのグループに再コード化されます。1 または 0 のいずれか - それらが > か < かによって異なります。以下の例を参照してください。
これまでに行った方法は、たとえば R plyr パッケージを使用することです。
Genedata$SPOCK1.202363_at_recode[Genedata$SPOCK1.202363_at<= 8.2244399999999995] <- "0"
Genedata$SPOCK1.202363_at_recode[Genedata$SPOCK1.202363_at> 8.2244399999999995] <- "1"
Genedata_Recoded$SPOCK1.202363_at_recode <- factor(Genedata$SPOCK1.202363_at_recode)
この場合、変数は :SPOCK1.202363_at
で、カットオフは 8.2244399999999995 です。
ただし、変数名とカットオフの両方が個々の変数ごとに変化することを考えると、apply
R で関数を使用する方法がわかりません。
その結果、私は現在、R 関数を呼び出すことができる Python モジュールである PyPer を使用しています。placeholder を使用して、%s
各変数名とカットオフ値を繰り返し置き換えます。
問題
1) 現在、CSV ファイルを開くのに時間がかかる --> バイナリ ファイルまたはマトリックスとして保存すると、これが高速化されると思います。ただし、これは優先事項ではありません。
2) 繰り返します。plyrパッケージを使用してrecode関数を使用して、2つの変化する変数でapply関数を使用する方法はありますか?
3) 反復にかかる現在の時間は、変数によって非線形に増加しているようです。1000 変数の場合は約 30 秒かかりますが、43000 の場合は遅くなるようです。これの原因はわかりません。おそらく説明?
4) マルチプロセッシング パッケージを使用して反復タスクを簡単に並列化し、速度をさらに向上させる方法はありますか
更新:なぜ「0」と「1」が数値か非数値かは関係ありません。それを選んだだけです。最終的に、私の分析の次の部分は、数値かどうかに関係なく 2 つのグループを取り、それを処理します。
更新 2:前提をより明確に言い換えました